JAVA进阶自学第二天
专升本在读三本计科专业。立志找到一份JAVA工作。
记录学习过程;学习时间大概6小时,作为对之前学习的内容一个复习;
-------------------------------------------------------------------------------------------------------------------------------
生产随机数
Math.random默认给的是[0 , 1)的随机数
生成[min , max]
Math.random()*(max - min + 1 ) - min
生成[min,max)
Math.random()*(max - min) - min
数组不能够直接打印
可以使用其他方法:Stream流 {}
可以用流程控制语句 for for-each
Arrays工具类的toString
打印二维数组:Arrays.deepToString()
数组的算法练习
线性法和中分法
排序的练习 1.冒泡排序 *2.快速排序*
Arrays工具类
Arrays.equals(属性1,属性2 ) 比较属性而不是地址值
Arrays.toString 将数组输出
Arrays.fill(数组 ,变量) 将变量填充
Arrays.sort(排序数组)
中分查找 Arrays.binarySearch(数组 ,找的量)
要看得懂异常
NullPointerException 空指针异常
ArrayIndexOutOfBoundsException 超出数组范围异常
String源码 (有点难 放到后面学习)
不要用==比较字符串是否相等,因为==比较的是地址值。应该用equals
数组的总结
数组概念:有不同的数组类型,集合框架(Set,Map,List)
数据储存的都是紧密排列的,有顺序的,可重复的。
一旦进行初始化,其长度就不能更改
一维数组的使用(重要):
1.数组的声明和初始化 列如:
int[] arr = new int[]{元素} 或者 先声明后添加数组 再或者 int[] arr = {元素}
2.调用数组的指定元素
arr[i] i 为下标;角标;index
3.数组的属性:length表示数组的长度
4.数组的遍历
数组遍历可以用很多方式
流程控制语句(for , for-each)。
5.数组的元素和默认初始值
初始值在前一天的内容有提起
6.数组的内存解析
在main()方法下:声明一个 int[] arr = new arr[] {1,2,3}
虚拟机栈:在main()栈帧中存放着arr变量,arr记录着实体地址值
堆:存放arr中的实体
二维数组的使用:(同上)
数组的常用算法:
最大值,最小值,求和,平均值等;数组元素的赋值,杨辉三角;
数组赋值,复制;扩容;缩容;反转;排序:冒泡排序,快速排序;查找:线性,中分;
Arrays工具类的使用
Arrays工具类
Arrays.equals(属性1,属性2 ) 比较属性而不是地址值
Arrays.toString 将数组输出
Arrays.fill(数组 ,变量) 将变量填充
Arrays.sort(排序数组)
中分查找 Arrays.binarySearch(数组 ,找的量)
数组中常见异常
NullPointerException 空指针异常
ArrayIndexOutOfBoundsException 超出数组范围异常
第二阶段——JAVA强大的面向对象
我的认为:之前编程都是面向过程,面向对象就是新建一个类,里面的内容还是面向过程,但是需要用到这个类只需要引用。这样做的好处就是节省主代码的观赏性,以及不引用时不会使用内存。
在这个类当中,可以新建成员变量
对象在创建时都会在堆中分配空间;且创造对象需要一个main方法作为入口
面向对象学习路线:
>Java类及类的成员:(重点)属性,方法,构造器;(熟悉)代码块,内部类;
>面向对象的特征:封装,继承,多态,(抽象)
>其他关键词的作用:this() , super() , package , import , static , final , interface , abstact等
类与对象
类:就是对一事物的抽象概念;如:人,动物
对象:实际存在的具体个体,也叫实例;某个人(我),某个动物(猫)
类的设计:类的属性(成员变量)
类的行为(成员方法)
面向对象的三步骤1.创建类,设计类的内部成员方法(method)及属性(field);
2.新建一个类的对象,列如 Phone p1 = new Phone();
3.通过对象声明类的方法和属性
对象内存解析:
main()下
栈:存放新建的对象;理解为:Phone p1 的 p1
堆:存放对象的属性以及方法
图形理解法
Person p1 = new Person();
Person p3 = p1; 则 p1, p3的地址值是相同的
类的属性
变量的分类
1.数据类型分,基本和引用
2.声明位置不同分;
在方法体外声明的就是成员变量;
在方法体内声明的就是局部变量;
如 public class Student{
String name; 成员变量
int age;
public void sayHello{
String info = "Hello" 局部变量
}
}
是否有默认值?
属性是一定有默认值的,不然无法调用
局部变量是没有默认初始值,需要赋值,不然报错