一、Scanner类
1、除了八种基本数据类型,其他都是引用类型;
引用类型使用三步骤:
2、Scanner类
引用jdk提供的类,Scanner在java.util包下,不在java.lang包(String)下使用的都要import,查找jdk api,看构造方法创建对象,再看成员方法实现功能;
3、Scanner实现在控制台接收键盘输入的两个Int值相加
4、Scanner类比较找出三个数中最大值
二、匿名对象
1、只使用一次:因为每次new都创建新的对象,再使用时候找不到那个堆内存中的之前的匿名对象
2、使用匿名对象作为方法的入参和返回值
匿名对象只是在对象被创建的时候没有栈内存中没有引用对象名称存放堆内存中对象的地址值,后面作为方法的入参和返回值被接收命名之后,就可以无数次用了;
匿名对象直接调用成员方法、使用匿名对象作为方法的入参和返回值:
三、Random类——生成随机数字
1、引用类型使用:导包(除了java.lang包)、创建、使用——jdk api中的 包路径、构造方法、成员方法
2、Random类重载的nextInt()方法,有参数的nextInt()方法
左闭右开区间,
3、获取几到几的随机数
eg. 获取6到666的随机数
new Random().nextInt(601)+6;
4、猜数字游戏
while(true)循环体中一定要有break存在;
需要重复的操作放在循环体中,不需要的放在外面;
四、ArrayList
1、数组对象
2、ArrayList解决数组长度不可变的问题
泛型是集合中所有元素的同意数据类型,必须定义,必须是引用类型;
定义集合,jdk1.7之后右边的泛型可以省略;
常用成员方法,add()是一定成功,返回的boolean可以不接收;
3、包装类
jdk1.5之后会自动装箱和自动拆箱:
五、String类
1、String 的长度和类型不可变,每次变的时候是因为创建了新的String对象,只不过是用双引号赋值,不是new的方式创建,也是引用类型;
2、创建String对象——String类的构造方法
引用类型String不赋初值默认是null;直接双引号赋值时候,jvm会自动帮调用String类的构造方法,相当于new;
str3输出的是“ABC”,把ASCII码值对应的字符串起来输出;
3、字符串常量池
jdk1.7之后堆内存中有一块内存区域叫字符串常量池,直接双引号赋值的String类对象就在字符串常量池中,字符串常量池中字符串对象存储的也是地址值,指向堆内存中这个String对象底层的byte[]数组对象的地址值;
String底层是byte[],每个元素是字符的ASCII码值;
4、String类引用类型对象比较
equalsIgnoreCase(String str)忽略的是英文字母的大小,不忽略中文数字一1壹;应用:验证码不区分大小写
5、String类的常用方法
String类引用对象值有变化,那就是创建了新的String对象;
indexOf如果有就返回所在的索引值,重复的返回第一个索引值;
字符串截取方法:
字符串转换方法:
转换成字节数组,字节流时候用的上;
替换指定字符串,应用:过滤敏感字符串;
字符串分割方法:
正确切割:
6、字符串拼接练习题:
运行结果:
7、字符串内容判断练习题:
字符char类型在数学运算时候会自动转换成int类型,所以可以不用转ASCII值int类型,直接进行字符的大小比较判断;
六、static静态
1、定义在类中,改变值则所有该类的引用对象都变
2、static修饰成员变量即类属性用法
一个对象这个静态变量值变,所有该类引用对象都变;
定义类:
创建类的引用对象:
定义了第一个对象的room属性值,,则后面的不定义也有同样的值,运行结果:
3、static修饰方法
类加载时,先加载静态内容,所以静态方法中不能访问非静态成员变量和成员方法;
不能用this因为静态方法是直接用类调用,this代表的是当前引用对象;
用引用对象也可以调用静态变量和静态方法,编译器会自动翻译成类名调用;
4、static内存图
方法区中的静态区,类字节码信息也就是点class文件信息存在方法区中;
5、静态代码块
创建类:
创建两个引用对象:
七、Arrays工具类
局部变量、基本数据类型值和引用对象名(存放的堆内存中该对象的地址值)存在栈内存中,方法压栈执行,结束立即弹出消失,只执行最上面的;
创建的引用类型对象在堆内存中,堆内存中有一块字符串常量池——双引号赋值创建的String类对象;
方法区存的是类的编译字节码文件信息即class文件信息,包括成员变量和成员方法,以及静态变量和静态方法,有一块区域叫静态区;
1、Arrays是为数组提供了若干方法的一个工具类,常用方法:
2、将一个随机字符串中所有字符倒叙排序
八、Maths工具类
工具类一般都是封装了大量的静态方法,直接类名点调用
1、Maths工具类常用的静态方法
2、计算两个数值之间整数多少个