1、枚举enum
-
概念
- 是一组静态常量,用来规范数据类型
- 关键字:enum
- 里面直接写值(可以中文),默认public static final 修饰,中间用“ , ”隔开
- 枚举的定义,也可以直接定义:enum Box{PEN ,PENCIL}
public enum Sex { male , famale ; } // public class Student { enum Box{PEN , PENCIL}; Box box ; public static void main(String[] args) { Student stu = new Student(); stu.box = Box.PEN ; } }
-
枚举的调用
枚举作为引用,赋值只能选择在enum中定义过的,类名. 的方式调用赋值
public class Student { String name ; Sex sex ; public static void main(String[] args) { Student stu = new Student(); stu.sex = Sex.male ; System.out.println(stu.sex); } }
2、包装类
-
2.1概念以及构造方法
-
包装类,就是把基本的数据类型转换成对象。
-
包装类的作用:
- 提供了一系列实用的方法
- 集合不允许存放基本数据类型数据,存放数字时,要用包装类型
-
构造方法:
-
除了character 之外,都支持对应的基本数据类型和字符串作为参数构造对象,character 只支持本身的基本数据类型作为参数。
-
每个基本数据类型,都有与之对应的包装类
byte short int long float double boolean char
Byte Short Integer Long Float Double Boolean Character
-
-
-
2.2常用方法
-
-
toString() 返回一个字符串对像,代表这个包装类的值,通过对象调用。重写Object的toString
-
static toString(type t) 返回一个字符串,代表指定的基本数据类型的值。通过类名调用。
-
-
parsetype(String s) 将 字符串 -> 基本数据类型 。 静态方法。 character 除外。
-
typeValue() 包装类型 -> 基本数据类型 。非静态方法
-
valueOf(Type value) 基本数据类型 -> 包装类型。 静态方法
-
public static Type valueOf(type value)
-
除Character类外,其他包装类都有如下方法(字符串->包装类)
public static Type valueOf(String s)
//例如 Double d = new Double(45.23); //非静态的toString()方法需要实例对象调用。是重写Object的toString String str1 = d.toString() ; //静态的toString()方法可以通过 类名.的方式调用,()之中的参数为基本数据类型 ,返回对应的String字符串 String str2 = Double.toString(45.23); // static int parseType(String s) 字符串 -> 基本数据类型 int i = Integer.parseInt("89089"); //typeValue() 包装类型 -> 基本数据类型 Integer i = new Integer(788); int i1 = i.intValue() ; //valueOf() 基本数据类型 -> 包装类 Long l = Long.valueOf(89898L); Long l1 = Long.valueOf("24315141"); //Character(char ch) 只能传入char类型的基本数据类型 Character c = Character.valueOf('f');
-
-
-
2.3装箱以及拆箱 (JDK1.5之后)
-
JDK1.5之后的版本中,支持包装类与基本数据类型的混合运算。
-
装箱 基本的自动转换为包装类
-
拆箱 包装类自动转换为基本数据类
Integer i = 829 ; //自动装箱 int i1 = i ; //自动拆箱 //注意:在这里有个大坑: //对于数值类型的包装类取值为-128 ~ 127这个范围的时候,不会创建新的对象,统一在常量池中。 //例如 Short sh1 = 127 ; Short sh2 = 127 ; Short sh3 = 128 ; Short sh4 = 128 ; System.out.println(sh1 == sh2 );//打印结果为 true ,因为sh1 sh2 都指向的是常量池中的127 System.out.println(sh3 == sh4 );//打印结果为false,因为sh3 sh4 相当于new了两个实例,地址不同
-
3、Math
都是静态方法
abs(Type a ) 绝对值 double float int long
max (Type a , Type b ) 最大值 min(Type a , Type b ) 最小值 double float int long
random 小于1的随机小数 , 静态方法
如何获取随机数:(int)(Math.random() *10) 得到0 ~ 9个位数的随机数
(int)(Math.random() *100) 得到0 ~ 99 的随机数
ceil (double a) 向上取整 只有double
floor(double a) 向下取整 只有double
rond (double a) 四舍五入 浮点数都行
4、Random java.util.Random
主要用于获取随机数,提供的有各种类型的随机数获取方式,比如int,double,boolean等
使用:
import java.util.Random; public class Test8 { public static void main(String[] args) { // Random java.util包 Random rand1 = new Random(); rand1.setSeed(50); System.out.println(rand1.nextInt(20)); System.out.println(rand1.nextDouble()); System.out.println(rand1.nextBoolean()); Random rand2 = new Random(20); //随机的数是 0-20,但是不包括20,包括0.即包前不包后 System.out.println(rand2.nextInt(10)); System.out.println(rand3.nextInt(10)); } }
5、String
字符串,引用类型的数据
length():字符串长度
equals( String s ):比较内容, 返回Boolean
equalsIgnoreCase():忽略大小写比较内容, 返回Boolean
toLowerCase():转换为小写 返回String
toUpperCase():转换为大写 返回String
concat( String st ):拼接字符串 返回String
indexOf (int ch):查找第一个出现的位置,返回其下标 返回int
这个int类的ch 参数为 一个字符(Unicode代码点)
也可以传入字符串作为参数
lastIndexOf(String s ):查找最后一个出现的位置, 返回int
subString():截取字符串,包前不包后
int index 作为参数,代表返回一个从index开始截取的字符串
int index ,int endsIndex作为参数,代表返回一个从index开始,endsIndex结束的字符串
trim():去除前后的空格 ,返回一个String
startsWith(String s):判断是否已某个字符串开头
endsWith(String s):判断是否已某个字符串结尾
split():分割字符串为String数组
replace():替换字符串
replaceAll():可以支持正则表达式替换字符串
-
常量池
-
数值类型的包装类取值为-128 ~ 127这个范围,不会创建新的对象,为了节省内存空间
String类型效果相似,如果之前已经有相同值的字符串存在,那么本次不会创建新的对象,也是节省内存空间
-
在String的创建中,如果在创建之前,在常量池中,如果已经存在有内容一样的字符串,那么第二次创建乃至之后创建的时候,会直接引用常量池中的字符串地址。这里的创建不是new对象,而是利用自动装箱创建。例如:
String s1 = "abc" ; String s2 = "abc" ; System.out.println(s1 == s2) ; //输出结果为true
-
6、Runtime
getRuntime 获取一个Runtime实例
maxMemory(最大内存)
freeMemory(空闲内存)
totalMemory(总内存)
exec 执行可执行文件
gc 请求JVM调用垃圾回收
exit 退出虚拟机
7、System
没有构造方法,,方法都是静态方法
System.currentTimeMilles(); 获取当前系统的时间的毫秒值,从1970.1.1.00:00开始
System.exit(0); 底层调用的还是Runtime的exit();
System.gc() ;
8、StringBuffer和StringBuilder
- StringBuffer
- 线程安全 ,可变字符串
- 四个构造方法,支持无参构造,无参构造初始容量为16
- 方法和String大部分差不多,多了几个方法 apend()追加 insert() 插入 capacity() 容量 length() 字符串长度 reverse()反转,也少了几个
- StringBuilder
- 线程不安全,可变字符串 ,其他内容和StringBuffer一样