1.枚举
关键词:enum
1.1 为什么要使用枚举类:
先准备一组静态常量值去供用户选择输入, 限制用户输入,以避免用户的输入错误。
1.2 形式:
//如:
public enum Gender {
男,女
}
public class Student {
public String name;
public Gender gender;
}
public class StudentTest {
public static void main(String[] args) {
Student student1 =new Student();
student1.name ="小明";
student1.gender = Gender.女;
Student student2 =new Student();
student2.name ="小红";
//注:该写法是错误的,gender是枚举类型的所以需要对应的枚举类去使用。
student2.gender = 男;
Student student3 =new Student();
student3.name ="小黑";
// 注:该写法是错误的,如果想使用 你好 去输入先在枚举类中加入 你好
student3.gender =Gender.你好;
}
}
2.包装类
2.1为什么要使用包装类
在集合系统不存储基本数据类型而是通过包装类去存储
2.2方法:
2.2.1
除了int的包装类是Integer ,char的包装类是Character 基本类型对应的包装类是首字母大写。
如:Byte byte1 = new Byte(100);
注:参数要在对应的基本类型范围,如果不匹配就要报NumberformatException错误
注:Boolean是一点特殊的 true(不区分大小写) 而输入的字符不是true(不区分大小写)结果就是false
2.2.2
除Character类外,其他包装类可将一个字符串作为参数构造它们的实例
//如:
Boolean boolean1 = new Boolean("true");
System.out.println("boolean1:"+boolean1);
Boolean boolean2 = new Boolean("TrUe");
System.out.println("boolean2:"+boolean2);
Boolean boolean3 = new Boolean("false");
System.out.println("boolean3:"+boolean3);
//注:对于数值类型的包装类,这个字符串必须是纯数字形式的,否则无法转换,会报NumberFormatException
//该写法也是错误的
Character character2 = new Character("q");
//注:已过时了,java9以后被移除了无法使用,现在是通过valueOf去赋值如下:
Float aFloat=Float.valueOf(12.5F);
System.out.println("aFloat:"+aFloat);
2.2.3
包装类中的静态常量值,可以通过类名直接调用
//如:
System.out.println("byte类型数据的范围:"+Byte.MIN_VALUE+"~"+Byte.MAX_VALUE);
System.out.println("short类型数据的范围:"+Short.MIN_VALUE+"~"+Short.MAX_VALUE);
System.out.println("int类型数据的范围:"+Integer.MIN_VALUE+"~"+Integer.MAX_VALUE);
**注:该方法是获取对应类型的最小值与最大值,静态常量值在定义时采用的是纯大写的形式。**
2.2.4
XXXValue():包装类转换成基本类型
//如:
Long long1 = LongvalueOf("123");
long num1 = long1.longValue();
System.out.println("num1:"+num1);
2.2.5
static String toString(); 以字符串形式返回包装对象表示的基本类型数据(基本类型->字符串)
//如:
String str1 =Integer.toString(200);
System.out.println("str1:"+str1);
String str2 =Character.toString('w');
System.out.println("str2:"+str2);
2.2.6
static xxx parseXXX(); 把字符串转换为相应的基本数据类型数据(Character除外)(字符串->基本类型)
//如:
byte num2 = Byte.parseByte("123");
System.out.println("num2:"+num2);
注:Number类型数据的字符串转换成基本数据类型是,字符串需要是数字形式的字符串,否则不能转换,会报NumberFormatException
2.2.7
Type valueOf(type value) 所有包装类都有如下方法(基本类型->包装类)
//如:
Float aFloat=Float.valueOf(12.5F);
System.out.println("aFloat:"+aFloat);
Double aDouble =Double.valueOf(12.55);
System.out.println("aDouble:"+aDouble);
2.2.8
除Character类外,其他包装类都有如下方法(字符串->包装类): public static Type valueOf(String s),字符串为true(不区分大小写),结果都为true
Boolean aBoolean =Boolean.valueOf("true");
System.out.println("aBoolean:"+aBoolean);
Boolean bBoolean=Boolean.valueOf("TruE");
System.out.println("bBoolean:"+bBoolean);
注:Number类型的包装类使用valueOf(String s)方法,里面的字符串必须是数字形式的数字,否则不能转换,会报NumberFormatException
装箱与拆箱:
装箱:将基本类型的数据或者变量直接赋值给包装类对象
//如:
Integer integer1 =num1;
System.out.println("integer1:"+integer1);
Byte byte1 = new Byte("123");
拆箱:将包装类对象直接赋值给基本数据类型的变量
//如:
Byte byte1 = Byte.valueOf("123");
byte num2 =byte1;
System.out.println(byte1);
System.out.println(num2);
注:在java9前的写法是 Byte byte1 = new Byte(“123”); 该写法在java9后被认为过时了移除了。
注:有了装箱和拆箱的操作,可以对包装类对象和基本数据类型进行算术运算
Math类:
含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
常用方法:
注:Numbertype是基本类型如:int double float short long
返回值 | 方法名 | 参数 | 意义 |
---|---|---|---|
Numbertype | abs | Numbertype | 返回 Numbertype 值的绝对值 |
Numbertype | max | Numbertype ,Numbertype | 返回两个 Numbertype 值中较大的一个 |
Numbertype | min | Numbertype ,Numbertype | 返回两个 Numbertype 值中较小的一个 |
Numbertype | round | Numbertype | 返回最接近参数的返回最接近参数的 long(四舍五入) |
Numbertype | sqrt | Numbertype | 返回正确舍入的 Numbertype 值的正平方根 |
double | random | void | 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0 |
注:而在 **StrictMath类** 中存在向下取整的方法 Numbertype ceil(Numbertype)
Random
此类的实例用于生成伪随机数流
常用方法:
返回值 | 方法名 | 参数 | 意义 |
---|---|---|---|
int | nextInt | void | 返回下一个伪随机数,范围是int的范围且每个值的概率一样 |
int | nextIn | int | 返回一个伪随机数,范围是从0到指定值且不包括指定值 |
boolean | nextBoolean | void | 返回下一个伪随机数,范围是true或者false |
double | nextDouble | void | 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 double 值。 |