Java入门(六)之常用的类
Java入门之常用的类
目录
我们在使用Java的时候,有很多时候需要用到一些Java自带的类库,学会怎么使用,了解其提供的功能对我们开发很有帮助。
1. Math类
/*
Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。
Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。
static 是Java的一个关键字,可以用在方法名和属性名上面,表示静态。
静态的方法和属性即使在没有创建类的情况下也可以调用。
一般的属性调用是:new Example().num;
而静态的属性可以这样调用:Example.num;
*/
System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2));
System.out.println("0度的余弦值:" + Math.cos(0));
System.out.println("60度的正切值:" + Math.tan(Math.PI/3));
System.out.println("1的反正切值: " + Math.atan(1));
System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2));
System.out.println(Math.PI);
/*
random() 方法用于返回一个随机数,随机数范围为 0.0 =< Math.random < 1.0。
我们可以使用这个方法做一个抽奖
*/
int num = (int)Math.random()*100;//获取一个0-100的随机整数
int num2 = (int)Math.random()*100+200;//获取一个100-200的随机整数
/*
Math类还有许多的用法,基本的数学运算都有,如果本文没有提及,可以自行百度,资料非常多。
*/
2. Number类
-
我们在使用数字时,会使用byte,int,double,float等基本数据类型。但是我们无法像操作类一样去操作他们,而String是一个对象,我们可以操作String,调用它的一些方法。那么,这些基本数据类型能不能做到像String一样调用一些实用的方法呢。
-
当然是有的,Java 语言为每一个内置数据类型提供了对应的包装类。
所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类。
/* 首先,包装类可以像基本数据类型一样定义,一样运算。 */ Integer x = 5; x = x + 10; System.out.println(x); /* 我们也可以进行一些转换操作。 */ String str = "10"; int num = Integer.parseInt(str); num = num + 10; System.out.println(num);
3. String类
/*
String类比较特殊的是,可以通过"内容"来创建对象。
因为它是字符串,所以我们也可以定义一个字符数组,然后传入它的构造方法。
*/
char[] helloArray = { 'h', 'e', 'l', 'l', 'o'};
String helloString = new String(helloArray);
System.out.println( helloString );
//获得字符长度
System.out.println( helloString.length());
//链接两个字符
helloString.concat(" world!");
//切割字符串
String longstr = "小明 小红 小绿 小白";
String [] names = longstr.split(" ");
//以上用法只是部分,还有很多的方法可以使用,当你需要一些功能的时候,不如百度一下是不是有相关的方法可以直接使用。
/*
格式化字符。
跟printf一样,String可以格式化字符
*/
String fs;
fs = String.format("浮点型变量的值为 " +
"%f, 整型变量的值为 " +
" %d, 字符串变量的值为 " +
" %s", floatVar, intVar, stringVar);
4. StringBuffer 和 StringBuilder
/*
String字符串在拼接、替换等修改操作时,都是需要先新建一个String对象,替换到之前的对象。
而当我们需要复杂的修改时,使用String会影响我们的运行速度。
这时我们可以使用StringBuffer 和StringBuilder 来代替。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
*/
StringBuilder sb = new StringBuilder("hello");
sb.append(" ").append("world").append("!");
System.out.println(sb);
5. 数组
数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。
Java 语言中提供的数组是用来存储固定大小的同类型元素。
/*
首选方法
*/
数据类型[] 变量名;
/*
也可以这样写
*/
数据类型 变量名[];
/*
实例:
*/
int[] array;
/*
创建数组对象
*/
array = new int[10];
/*
也可以这样
*/
array = {1,2,3};
/*
为数组赋值
*/
array[1] = 1;
/*
多维数组
*/
double[][] rect = new double[3][4];
6. Arrays类
Arrays类可以用来操作数组对象,它的方法都是静态的。
/*
为数组赋值,使用fill方法可以为数组对象的所有元素赋上同一个值
*/
Arrays.fill(数组对象,值);
/*
sort方法可以为数组排序,顺序是升序
*/
Arrays.sort(数组对象);
/*
二分查找,使用前需要先排序
如果查找成功会返回索引,如果查找失败返回-1
*/
Arrays.binarySearch(数组对象,搜索的元素);
/*
比较,两个数组对象如果内容相同,并且顺序相同,那么就认为这两个数组是相同的。
*/
Arrays.equals(数组对象1,数组对象2)
7. 日期时间
1. Date类
/*
创建日期时间对象
*/
new Date();
//时间戳转日期时间
new Date(时间戳);
/*
默认的打印结果:
Thu Jan 16 16:11:34 CST 2020
*/
/*
比较时间有三种方法
使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。
使用方法 before(),after() 和 equals()。例如,一个月的12号比18号早,则 :
new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。
*/
2. SimpleDateFormat
/*
使用SimpleDateFormat可以格式化日期
*/
Date now = new Date( );
SimpleDateFormat sf = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
System.out.println("当前时间为: " + sf.format(now));
/*
可以字符串转为时间
*/
String time_str = "2020-01-16 16:16:16";
Date date = sf.parse(time_str);
System.out.println("字符串转化为时间: " + date);
8. Scanner类
我们可以使用这个类来获取用户的输入。
//定义
Scanner scan = new Scanner(System.in);
//接收键盘输入
System.out.print("请输入:");
String next = scan.next();//输入字符串
String next_int = scan.nextInt();//输入数字
...
练习:
使用本章知识,制作一个简易的课表。功能有:
- 查看本周课表,并可以选择上一周,下一周。
- 课表内容包括 课程名称,上课时间,第几周,星期几
- 输入时间查看当天课程。