xju实训上课笔记第一天
1.环境配置 jdk配置1.8,我查了我的java -version是18,好像要在此电脑里重新配置jdk版本,但是我找了E盘只找到1.8的版本,没有找到18的版本,为什么我的java version是18?我在C盘里没找到18的jdk版本呀。不知道怎么找。然后记得买电脑耳机。
2.面向对象,集合,数据结构,泛型
3.面向对象特性:封装继承多态-衍生:抽象,接口
关键字:this,super,static,final
常用类:Object,hash,equals,toString
开发要用的:封装类:java八大基本数据类型:int short byte char long float double
int-》Integer
byte-》Byte
char-》Character
== equals区别:基本数据类型比较值就行,引用数据类型比较空间地址值
一个是基本数据类型,一个是引用数据类型,一个比较值,一个比较地址,为什么a==aa还可以为true
Integer aa=5;1.5之后的自动装箱
离谱的事情发生了:
运行结果是: true,false
读逻辑:按住ctrl点进去代码
low:-128
high:127
每一个基本的数据类型都有一个对应的封装类
4.打开键盘的光fn+f3,
5.泛型:不确定的类型,广泛的类型
所有的类型都叫T
A可以改为K,V,T
//alt+insert 右键generate 创建get和set方法
用的时候把类型给确定了
泛型类,泛型接口,泛型方法
泛型通配符:
有问题:
通配符:?任意
?super String:任意的类都是String的长辈
? extends String:任意类继承于String的类
下限?super String
上限 ? extends String
?包括本身
String没有子类
?extends String有且仅有String。没有String的子类。因为String没有子类。?extends String就是String的意思
final 断子绝孙 最后的 修饰类,修饰方法,修饰变量
被final修饰的类是最后一个类
final修饰变量的时候 是引用不能改还是对应的值不能改?是银行卡不能变还是银行卡里的500w不能变?
final修饰方法,方法不能被重写。
java中的内存:
栈:存基本数据和引用数据类型的引用(基本数据类型的值),堆,
基本数据的值是5块钱
引用数据类型的引用是500w
是引用不能变而不是引用的值不能变。引用的值比如说500w,是可变的。变成400w,卡还是那张卡。
代码解释:
比如改变xx的值从111变为222,是可以的,但是再在栈里new一个新的空间是不行的。
堆相当于你去银行存500w。银行会给你一个银行卡。你的堆是一个银行卡。
finally一定执行。不管有没有return一定执行。
finalize obj里的方法 遗言
此时是有两个空间,但是只有一个引用xx,那么必须有一个空间是没有引用的,也就是垃圾。
垃圾自动回收。被垃圾算法清除。
右键generate一个Override Methods,找到finalize,
垃圾回收
运行这个
垃圾回收不会马上进行。
要给回收的东西打拆字。X
此时就需要gc:garbage clean
6.集合
List->AbstartcList->(实现类)Vector->ArrayList->AbstractSequentialList->Stack
集合的api不讲了
7.父接口的引用指向子类对象?
接口回调。多态。
transient 瞬态 瞬时间的 表示修饰的数据不能被序列化 (对象序列化 把对象持久存到磁盘或者其他空间 把对象读出来又叫反序列化)
{}空 null空数组
add
保证数组有size+1
defaultcapacity=10
modCount++;修改次数
集合如何在遍历的时候进行删除?
把集合中的奇数给删除掉
先写个for循环,
for(int i=0;i<list.size();i++){
if(list.get(i)%2!=0){
list.remove(i);
}
}
不能在foreach中实现remove
右移一位就是除以2
扩容:变成他的1。5倍
//算法题:用数组实现一个动态容器?数组特点:定长:类型确定。
普通添加数组的值:
根据索引添加数组的值:
用数组手写一个栈
栈的三个核心方法:pop,push,获取栈顶元素有两种,一种是弹栈pop,一种不弹栈的获取栈顶元素peek