2017.11.29_实验8_java基本类库

来源:互联网 发布:方舟生存进化内存优化 编辑:程序博客网 时间:2024/05/01 18:48


(一) 使用数学函数类

Math 是一个最终类,含有基本数学运算函数,如指数运算、对数运算、求平方根、三角函数、随机数等,可以直接在程序中加 Math.前缀调用。
1.使用Math中random()方法产生随机数的 Math 类。

package work03;public class TestMath {public static void main(String args[]) {int i1 = (int) (Math.random() * 100); // 产生大于等于 0 小于 100 的随机数double i2 = Math.random() * 100; // 产生大于等于 0.0 小于 1.0 的随机数double d1 = Math.sin(Math.toRadians(60.0));// 弧度值double d2 = Math.log(Math.E);// E 的对数值double d3 = Math.pow(2.0, 4.0);int r = Math.round(43.6F);System.out.println("i1 的随机数为 " + i1);System.out.println("d1 的随机数为 " + i2);System.out.println("60 弧度的正弦值:Math.sin(Math.toRadians(60.0))= " + d1);// 0.8660254037844386System.out.println("E 的对数值:Math.log(Math.E)= " + d2);// 1.0System.out.println("2 的 4 次方:Math.pow(2.0, 4.0)= " + d3);// 16.0System.out.println("43.6F 四舍五入:Math.round(43.6F)= " + r);// 44}}


2. 使用Random类产生随机数的Math 类。


package work03;import java.util.Random;public class TestMath {public static void main(String args[]) {Random r1 = new Random(1234567890L);Random r2 = new Random(1234567890L);boolean b = r1.nextBoolean(); // 随机数不为 0 时取真值int i1 = r1.nextInt(100); // 产生大于等于 0 小于 100 的随机数double i2 = r1.nextDouble(); // 产生大于等于 0.0 小于 1.0 的随机数double d1 = Math.sin(Math.toRadians(60.0));double d2 = Math.log(Math.E);double d3 = Math.pow(2.0, 4.0);int r = Math.round(43.6F);System.out.println("b 的随机数不为 0 时 " + b);System.out.println("i1 的随机数为 " + i1);System.out.println("d1 的随机数为 " + i2);System.out.println("60 弧度的正弦值:Math.sin(Math.toRadians(60.0))= " + d1);System.out.println("E 的对数值:Math.log(Math.E)= " + d2);System.out.println("2 的 4 次方:Math.pow(2.0, 4.0)= " + d3);System.out.println("43.6F 四舍五入:Math.round(43.6F)= " + r);}}


(二) 使用日期类

Java 提供了 3 个日期类:Date、Calendar 和 DateFormat。其中,Date 类主要用于创建日期对象并获取日期,Calendar 类可获取和设置日期,DateFormat 类用来设置日期的格式。
Java 语言规定的基准日期为 1970.1.1 00:00:00 格林威治(GMT)标准时间,当前日期是由基准日期开始所经历的毫秒数转换出来的。
1.使用日期类的 Applet 应用程序

package work03;import java.applet.Applet;import java.awt.Graphics;import java.text.DateFormat;import java.util.Calendar;import java.util.Date;import java.util.Locale;public class TestDateCalendar extends Applet {private static final long serialVersionUID = 1L;public void paint(Graphics g) {Date today;Calendar now;DateFormat f1, f2;String s1, s2;today = new Date(); // 获取系统当前日期g.drawString("字符串格式:" + today.toString(), 20, 20);f1 = DateFormat.getInstance(); // 以默认格式生成格式化器s1 = f1.format(today); // 将日期转换为字符串g.drawString("系统格式:" + s1, 20, 40);// 生成长格式的中国日期格式化器f1 = DateFormat.getDateInstance(DateFormat.LONG, Locale.CHINA);// 生成长格式的中国时间格式化器f2 = DateFormat.getTimeInstance(DateFormat.LONG, Locale.CHINA);s1 = f1.format(today); // 将日期转换为日期字符串s2 = f2.format(today); // 将日期转换为时间字符串g.drawString("中国格式:" + s1 + " " + s2, 20, 60);now = Calendar.getInstance(); // 获取系统时间s1 = now.get(now.HOUR) + "时" + now.get(now.MINUTE) + "分"+ now.get(now.SECOND) + "秒";g.drawString("调整前时间:" + s1, 20, 80);now.set(2004, 8, 15, 9, 9, 9);today = now.getTime();g.drawString("调整后时间:" + today.toString(), 20, 100);}}



2. 在独立运行的应用程序中使用日期函数。

package work03;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class TestDateCalendar {public static void main(String args[]) {Date today = new Date(); // 当前日期和时间SimpleDateFormat sdf;sdf = new SimpleDateFormat("yyyy 年 MM 月 dd 日 hh 时 mm 分 ss 秒 a EEEEE");System.out.println("当前日期和时间: " + sdf.format(today));long hms = System.currentTimeMillis();// 当前时间的毫秒数System.out.println("当前时间的毫秒数=" + hms);Date tomorrow = new Date(hms + 24 * 60 * 60 * 1000);System.out.println("明天是" + sdf.format(tomorrow));Calendar now = Calendar.getInstance();int year = now.get(Calendar.YEAR);// 年份int month = now.get(Calendar.MONTH) + 1;// 月份int day = now.get(Calendar.DATE);// 日期System.out.print("今天是" + year + "年" + month + "月" + day + "日");int week = now.get(Calendar.DAY_OF_WEEK); // 星期switch (week) {case 1:System.out.println("星期日");break;case 2:System.out.println("星期一");break;case 3:System.out.println("星期二");break;case 4:System.out.println("星期三");break;case 5:System.out.println("星期四");break;case 6:System.out.println("星期五");break;case 7:System.out.println("星期六");break;}}}/*当前日期和时间: 2017 年 11 月 29 日 08 时 30 分 10 秒 下午 星期三当前时间的毫秒数=1511958610903明天是2017 年 11 月 30 日 08 时 30 分 10 秒 下午 星期四今天是2017年11月29日星期三*/


3.编写程序,首先声明使用的包名jacky,然后创建 YMD 类,该类具有两个成员方法,功能分别为计算今年的年份以及输出一个带有年月日的字符串。

package work03;import java.util.Calendar;public class YMD {private int year, month, day;public YMD(int year, int month, int day) {super();this.year = year;this.month = month;this.day = day;}public static int thisyear() {return Calendar.getInstance().get(Calendar.YEAR);}public String toString() {return year + "-" + month + "-" + day;}public static void main(String[] args) {// TODO Auto-generated method stubYMD yy = new YMD(2017, 1, 1);System.out.println(thisyear());System.out.println(yy);}}/*20172017-1-1*/

4.编写使用包jacky中YMD 类的程序,LX.java 程序功能:给定某人姓名与出生日期,计算该人年龄,并输出该人姓名,年龄,出生日期。程序使用 YMD 的计算年份的方法来计算年龄。

package work03;import java.util.Calendar;public class YMD {private int year, month, day;public YMD(int year, int month, int day) {super();this.year = year;this.month = month;this.day = day;}public int year() {// TODO Auto-generated method stubreturn year;}public static int thisyear() {return Calendar.getInstance().get(Calendar.YEAR);}public String toString() {return year + "-" + month + "-" + day;}public static void main(String[] args) {// TODO Auto-generated method stubYMD yy = new YMD(2019, 1, 1);System.out.println(thisyear());System.out.println(yy);}}

package work03;public class LX {private String name;private YMD birth;public LX(String name, YMD birth) {super();this.name = name;this.birth = birth;}public LX(String name,int year,int month,int day){this(name,new YMD(year,month,day));}public int age(){return YMD.thisyear()-birth.year();}public String toString(){return  name+" "+birth+" "+age();}public static void main(String[] args) {// TODO Auto-generated method stubLX aa=new LX("小怡",1998,7,20);System.out.println(aa);}}/*小怡 1998-7-20 19*/


(三) 使用向量类 Vector

大多数编程语言中的数组是固定长度的,即数组一经建立就不能在使用过程中改变其长度。Java 引入 Vector 类来创建可以改变长度的变量。Vector 被设计成一个能不断增长的序列,它类似于可变长数组,但功能更加强大,因为任何类型的对象都可以放入 Vector 类的对象中。通过调用 Vector 封装的方法,可以随时添加或删除向量元素,以及增加或缩短向量序列的长度。
1.创建使用 Vector 向量类的应用程序

(四) 使用基本类型包装类

1.掌握包装类的使用方法

package work03;public class Demo02 {public static void main(String[] args) {//int n = 10;Integer in = new Integer(100);//Integer in1 = new Integer(n);int m = in.intValue();System.out.println(in.toString());//100System.out.println("m=" + m);//100Integer in2 = Integer.valueOf(20);System.out.println(in2.toString());//20String s = "123";int k = Integer.parseInt(s);System.out.println("k=" + k);//123// 测试其它数值类型.......char c = 'x';Character ch = new Character(c);System.out.println(ch.toString());//xchar c1 = ch.charValue();System.out.println(c1);//xSystem.out.println(Character.isDigit('6'));//trueSystem.out.println(Character.isLetter('a'));//trueSystem.out.println(Character.isLetterOrDigit('6'));//trueSystem.out.println(Character.isLowerCase('a'));//trueSystem.out.println(Character.isUpperCase('A'));//trueSystem.out.println(Character.toUpperCase('a'));//ASystem.out.println(Character.toLowerCase('A'));//aboolean b = true;Boolean bo = new Boolean(b);System.out.println(bo.toString());//trueboolean b1 = bo.booleanValue();System.out.println(b1);//true}}

2.编程完成从键盘输入10个整形数,计算出平均值

①键盘输入字符串并取得整形数的操作如下:

BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));

int  k;

String str;

str = keyin.readLine();//取得一行从键盘输入的字符串。

k= Integer.parseInt(str);//转化为整形

②键盘输入取得整形数也可以采用如下操作:

import java.util.Scanner;

Scanner input=new Scnner(System.in);

int x;

x=input.nextInt();//取得从键盘输入的整形数。

package work03;import java.util.Scanner;public class Demo02 {public static void main(String[] args) {Scanner sc=new Scanner(System.in );int x;int sum=0;for(int i=0;i<10;i++){x=sc.nextInt();sum+=x;}System.out.println((double)(sum/10));}}