Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

时间:2021-08-18 15:39:27

一、Scanner类

1、除了八种基本数据类型,其他都是引用类型;

引用类型使用三步骤:

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

2、Scanner类

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

引用jdk提供的类,Scanner在java.util包下,不在java.lang包(String)下使用的都要import,查找jdk api,看构造方法创建对象,再看成员方法实现功能;

3、Scanner实现在控制台接收键盘输入的两个Int值相加

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

 4、Scanner类比较找出三个数中最大值

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

二、匿名对象

1、只使用一次:因为每次new都创建新的对象,再使用时候找不到那个堆内存中的之前的匿名对象

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

 2、使用匿名对象作为方法的入参和返回值

匿名对象只是在对象被创建的时候没有栈内存中没有引用对象名称存放堆内存中对象的地址值,后面作为方法的入参和返回值被接收命名之后,就可以无数次用了;

匿名对象直接调用成员方法、使用匿名对象作为方法的入参和返回值:

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

 三、Random类——生成随机数字

1、引用类型使用:导包(除了java.lang包)、创建、使用——jdk api中的 包路径、构造方法、成员方法

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

 

2、Random类重载的nextInt()方法,有参数的nextInt()方法

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

左闭右开区间,Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

 3、获取几到几的随机数

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

eg. 获取6到666的随机数

new Random().nextInt(601)+6;

4、猜数字游戏

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

while(true)循环体中一定要有break存在;

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

需要重复的操作放在循环体中,不需要的放在外面;

四、ArrayList

1、数组对象

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

2、ArrayList解决数组长度不可变的问题

泛型是集合中所有元素的同意数据类型,必须定义,必须是引用类型;

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

定义集合,jdk1.7之后右边的泛型可以省略;

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

常用成员方法,add()是一定成功,返回的boolean可以不接收;

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

3、包装类

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

jdk1.5之后会自动装箱和自动拆箱:

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

 五、String类

1、String 的长度和类型不可变,每次变的时候是因为创建了新的String对象,只不过是用双引号赋值,不是new的方式创建,也是引用类型;

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

2、创建String对象——String类的构造方法

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

引用类型String不赋初值默认是null;直接双引号赋值时候,jvm会自动帮调用String类的构造方法,相当于new;

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

str3输出的是“ABC”,把ASCII码值对应的字符串起来输出;

3、字符串常量池

jdk1.7之后堆内存中有一块内存区域叫字符串常量池,直接双引号赋值的String类对象就在字符串常量池中,字符串常量池中字符串对象存储的也是地址值,指向堆内存中这个String对象底层的byte[]数组对象的地址值;

String底层是byte[],每个元素是字符的ASCII码值;

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

 4、String类引用类型对象比较

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

equalsIgnoreCase(String str)忽略的是英文字母的大小,不忽略中文数字一1壹;应用:验证码不区分大小写

5、String类的常用方法

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

String类引用对象值有变化,那就是创建了新的String对象;

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

indexOf如果有就返回所在的索引值,重复的返回第一个索引值;

字符串截取方法:

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

字符串转换方法:

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

转换成字节数组,字节流时候用的上;

替换指定字符串,应用:过滤敏感字符串;

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

字符串分割方法:

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

正确切割:Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

6、字符串拼接练习题:

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

运行结果:Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

7、字符串内容判断练习题:

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

字符char类型在数学运算时候会自动转换成int类型,所以可以不用转ASCII值int类型,直接进行字符的大小比较判断;

六、static静态

1、定义在类中,改变值则所有该类的引用对象都变

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

2、static修饰成员变量即类属性用法

一个对象这个静态变量值变,所有该类引用对象都变;

定义类:

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

创建类的引用对象:

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

定义了第一个对象的room属性值,,则后面的不定义也有同样的值,运行结果:

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

 3、static修饰方法

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

类加载时,先加载静态内容,所以静态方法中不能访问非静态成员变量和成员方法;

不能用this因为静态方法是直接用类调用,this代表的是当前引用对象;

用引用对象也可以调用静态变量和静态方法,编译器会自动翻译成类名调用;

4、static内存图

方法区中的静态区,类字节码信息也就是点class文件信息存在方法区中;

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

5、静态代码块

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

创建类:

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

 

 创建两个引用对象:

 Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

 七、Arrays工具类

局部变量、基本数据类型值和引用对象名(存放的堆内存中该对象的地址值)存在栈内存中,方法压栈执行,结束立即弹出消失,只执行最上面的;

创建的引用类型对象在堆内存中,堆内存中有一块字符串常量池——双引号赋值创建的String类对象;

方法区存的是类的编译字节码文件信息即class文件信息,包括成员变量和成员方法,以及静态变量和静态方法,有一块区域叫静态区;

1、Arrays是为数组提供了若干方法的一个工具类,常用方法:

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

2、将一个随机字符串中所有字符倒叙排序

 Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

八、Maths工具类

工具类一般都是封装了大量的静态方法,直接类名点调用

1、Maths工具类常用的静态方法

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

2、计算两个数值之间整数多少个

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类