SyStem类
System(系统类) - 提供的属性
系统标准的输入流(方向:控制台—> 程序)
InputStream in = System.in; Scanner scan = new Scanner(in); String str = scan.next();
系统标准的输出流(方向:程序—>控制台)
String str = "系统标准的输出流"; PrintStream out = System.out; out.println(str);//系统标准的输出流
System(系统类) - 提供的方法
eg:
System.currentTimeMillis();//获取毫秒 System.nanoTime();//获取纳秒 //退出当前虚拟机(参数为0-正常退出;参数为其它数字-非正常退出) System.exit(0); //获取系统参数 Properties properties = System.getProperties(); System.out.println(properties); //通过key获取value String property = System.getProperty("os.name"); System.out.println(property);//Windows 10--打印的是操作系统 //将指定源数组中的数组从指定位置复制到目标数组的指定位置--拷贝数组 int[] is = {1,2,3,4,5,6,7,8,9}; int[] newIs = {0,0,0,0,0,0,0,0,0,0,0}; System.arraycopy(is, 2, newIs, 8, 3);//参数对应的含义(源数组,起始下标,目标数组,起始下标,拷贝长度) System.out.println(Arrays.toString(newIs));//[0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5] //将指定源数组中的数组从指定位置复制到目标数组的指定位置--删除数组 //利用该方法可以达到删除数组里面数据的效果 String[] names = {"aaa","bbb","ccc","ddd","eee","fff","ggg"}; System.arraycopy(names, 3, names, 2, 7-3);//参数:原数组,要删除数据的索引,目标数组,拷贝的长度 names[names.length-1] = null; System.out.println(Arrays.toString(names));//[aaa, bbb, ddd, eee, fff, ggg, null]
BigInteger()-整数大数值运算类
Integer为整型数据,一般情况下它的取值范围从 -2147483648到2147483647
BigInteger 类型的数字范围比较Integer类型的数字范围要大的多 ,BigInteger 支持任意精度的整数,在运算中 BigInteger 类型可以准确地表示任何大小的整数值,因此可以避免使用Integer类型数字超出范围时带来的影响。
BigInteger 中的一些运算方法:
BigInteger big1 = new BigInteger("12345678901"); BigInteger big2 = new BigInteger("12345678901"); BigInteger add = big1.add(big2); System.out.println("加法:" + add);//24691357802 BigInteger subtract = big1.subtract(big2); System.out.println("减法:" + subtract);//0 BigInteger multiply = big1.multiply(big2); System.out.println("乘法:" + multiply);//152415787526596567801 BigInteger divide = big1.divide(big2); System.out.println("除法:" + divide);//1
BigDecimal()-小数大数值运算类
小数大数值运算类的优点:
当使用double/float类型的小数数值进行运算时可能会存在精度的丢失:
double x = 0.7; double y = 0.8; System.out.println(x+y);//控制台输出结果为:0.8999999999999999 BigDecimal big1 = new BigDecimal("0.7"); BigDecimal big2 = new BigDecimal("0.2"); BigDecimal add = big1.add(big2);//加法 System.out.println(add);//输出结果为:0.9
因此,使用**BigDecimal()**可以提高计算中的精度,支持任何精度的定点数,可以用它来精确计算货币值。
ps: java-api官方文档还提供了许多大数值运算类的运算方法,需要时可以查阅官方文档
枚举类
枚举类的应用场景:
一个类只能有固定的几个对象时,就使用枚举替代
编写一个枚举类:
需求:编写季节类(Sesson),该类只有(Spring,summer,autumn,winter)四个对象
public enum Season{ //注意:枚举类的第一行必须声明对象 //默认使用public static final Season修饰 spring("春天","春雨绵绵"), summer("夏天","烈日炎炎"), autumn("秋天","硕果累累"), winter("冬天","银装素裹"); private String name; private String info; private Season() { } private Season(String name, String info) { this.name = name; this.info = info; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } @Override public String toString() { return name + " -- " + info; } }
创建测试类:
调用枚举类Sesson中的方法:
public class Test { /** * 知识点:枚举类的常用方法 */ public static void main(String[] args) { //通过字符串找到枚举类中的对象 Season spring1 = Enum.valueOf(Season.class, "spring"); System.out.println(spring1);//春天 -- 春雨绵绵 //通过字符串找到枚举类中的对象 Season spring2 = Season.valueOf("spring"); System.out.println(spring2);//春天 -- 春雨绵绵 System.out.println("--------"); //获取枚举类中所有的对象 Season[] seasons = Season.values(); for (Season season : seasons) { System.out.println(season.name()); //spring summer autumn winter } } }
组织枚举:
一个类/接口中存在多个枚举类:
public interface Code { enum AddCode { ERR_A(-1,"添加失败 -- 学生信息不合法"), ERR_B(-2,"添加失败 -- 已有该学生"), OK(1,"添加成功"); private int code; private String message; private AddCode() { } private AddCode(int code, String message) { this.code = code; this.message = message; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } @Override public String toString() { return code + " -- " + message; } } enum DeleteCode { ERR_A(-1,"删除失败 -- 学生信息不合法"), ERR_B(-2,"删除失败 -- 没有该学生"), OK(1,"删除成功"); private int code; private String message; private DeleteCode() { } private DeleteCode(int code, String message) { this.code = code; this.message = message; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } @Override public String toString() { return code + " -- " + message; } } }
创建测试类:
public class Test { public static void main(String[] args) { //调用Code接口中的枚举打印错误码以及对应的错误信息 System.out.println(Code.AddCode.ERR_A); System.out.println(Code.DeleteCode.ERR_A); } }