java数学基础_Java基础知识回顾
Java-base
数组
数组必须初始化
默认值与类型有关
内存分配
对于int[] arr = new int[3];
左边在内存有⼀个区域(栈内存,局部变量(指向于new出来对象的⾸地址⾸地址),使⽤完毕⽴即消失),右边也有⼀个区域(堆内存,new出来的东西(地址+数据),垃圾回收器空闲时清理)
左边arr指向于数组的⾸地址
⽅法
重载
同⼀个类的多个⽅法具有相同名,但是参数个数或者类型不同,称之⽅法重载
内存分配
形参修改
main⽅法先进栈内存,带有实参
然后调⽤⽅法(带形参)进栈内存,在调⽤的⽅法中修改形参
分别占有栈内存两个区域,所以形参的改变不影响实参
引⽤类型
通过引⽤修改堆内存的数据,故改变了实参
Debug
意义
在于查看⾃⼰所写代码在运⾏中的流程,变量的如何变化,即程序的跳转⽅向顺序
⽤法
打断点
按F7,从断点处执⾏下⼀⾏,遇到输⼊语句,要在console中先输⼊数据
对象
内存分配类似于数组
成员变量与局部变量
成员变量:类内的变量,堆内存,随着对象消失⽽消失,有默认初始值
局部变量:成员⽅法内的变量,栈内存,随着⽅法调⽤消失⽽消失,没有默认初始值必需先赋值
this关键字
局部变量与成员变量同名,⽤this指向成员变量,⽤于区分两者,谁调⽤this指向那个对象
构造⽅法
会默认执⾏构造⽅法中的语句
构造⽅法根据参数个数的不同会有多种,建议⼿写默认⽆参构造java接口有没有构造方法
API
使⽤流程
点击索引,输⼊查类
先看在哪个包
查看功能描述
查看构造⽅法
重点关注成员⽅法,关注⽅法的返回类型,所需参数,功能描述
字符串
String字符串为常量,值不可变
特点:当使⽤String str = "abc"创建字符串,堆内存中会在常量池中存放⼀个"abc"字符串,当创建⼀个内容相同内容的字符串String
str1 = "abc",它也会去常量池中,故栈内存的str1与str2指向地址相同的
== 基本类型⽐较的是数据值,引⽤类型⽐较的是地址值;equals⽐较的是数据值(字符串为对象,即引⽤类型,⽐较内容是是通过equals)
StringBuilder字符串为变量,值可变。⾃带append()⽅法和reverse()⽅法,好处在于不⽤每声名⼀个str,都要在堆内存中的常量池中消耗内存空间存放str
String与StringBulide的转换
String-->StringBuilder 通过StringBuilder(str)的构造⽅法
StringBuilder->String 通过String()
集合
Collection(单列)和Map(双列)
Collection
add()
remove()
clear()
contains()
isEmpty()
size()
遍历:Iterator Collection集合专⽤遍历器,集合类的成员变量
it.hasNext()
<()
List(可重复,有序)与Set(不可重复)
List
add()
remove()
set()
get()
ListIterator List专⽤遍历器,可以双向遍历
List常⽤集合ArrayList(顺序表)和LinkedList(链表)
ArrayList:可调整⼤⼩的数组
常见⽅法
⽆参构造
add(E e) 添加到集合尾端
add(int index,E element) 指定位置插⼊元素
remove(Object o) 删除指定内容的元素
remove(int index) 删除指定下标的元素
set(int index,E element) 修改指定下标的元素
get(int index) 获取指定下标的元素
size() 获取集合元素个数
LinkedList
addFirst()
addLast()
getFirst()
getLast()
removeFirst()
removeLast()
Set 没有索引,不能通过普通for循环遍历,使⽤add⽅法时不保证顺序
哈希值 根据对象地址或者字符串或者数字计算出来的int类型数值
hashCode() 获取对象哈希值,通常不同对象哈希值不同,通过重写可以实现不同对象哈希值相同HsahSet
底层为哈希表
顺序不保证⼀致
不能通过普通for遍历
不含重复值
LinkedHashSet 哈希表+链表 不重复但⼀致
TreeSet 按⼀定的规则排序,排序⽅式取决于构造⽅法
Comparable ⾃然排序器(接⼝)
Comparator ⽐较器排序(类)
泛型
优点:把运⾏时期的问题提到编译期;避免了强制转换
泛型类与泛型⽅法:先⽤泛型给出参数类型,先不明确类型,根据实际调⽤才决定类型,提⾼代码复⽤性
泛型接⼝
类型通配符 > extends a> super b>
Map 键值⼀⼀对应,键唯⼀性
创建⽅式 多态⼦类
put() 键值关联
remove()
clear()
containsKey()
containsValue()
isEmpty()
size()
get() 根据键获取值
keySet() 获取所有键集合
values() 获取所有值集合
继承
优点:提⾼代码复⽤性,维护性
缺点:耦合性增强,当⽗类发⽣改变,⼦类也要变
使⽤条件:符合A is B。例如猫属于动物
成员⽅法中调⽤⼀个变量的访问顺序:先在⽅法内部,其次类的成员变量(this.本类对象引⽤),最后⽗类的成员变量(super.⽗类对象引⽤)
调⽤⼦类⽆参或者有参构造⽅法,会先调⽤⽗类中⽆参构造⽅法(默认有⼀句super(),可以通过改写该⽅法实现⼦类创建时⽗类带参构造)。⼦类初始化之前⼀定要先完成⽗类数据的初始化。
⽅法重写:⼦类出现和⽗类⼀样声名的⽅法,⼦类中添加独有⽅法,并继承了⽗类的拥有的⽅法,通过super调⽤,可以⽤@Override检查重写⽅法声明的正确性。
⽗类中私有内容,⼦类⽆法继承
要注意访问权限,⼦类重写⽗类⽅法权限不能低于⽗类低
单继承和多层继承
final
⽅法 不能被重写
类 不能被继承
基本变量 不能被修改内容
引⽤变量 不能被修改的是地址,但是地址内容可以修改
static
修饰成员⽅法与成员变量
被类的所有对象共享
可以通过对象或者类调⽤被静态的内容,推荐通过类名访问
⾮静态可以访问静态与静态,静态仅可访问静态
多态
成员变量:编译看左边,执⾏看左边
成员⽅法:编译看左边,执⾏看右边 (成员⽅法被重写导致)
好处:提⾼程序扩展性,定义⽅法时⽤⽗类型作为参数,将来使⽤时使⽤具体的⼦类型参与操作,即都可以访问⽗类的⽅法,对于新类型仅需创建⼀个新的类,通过继承⽗类,即可利⽤多态,即可访问⽗类⽅法
弊端:不能使⽤⼦类特有的功能
转型:使之能访问⼦类的特有功能
具体类多态,抽象类多态,接⼝多态
抽象类
有抽象⽅法必须为抽象类(即没有⽅法体)
抽象类可以有⾮抽象⽅法
抽象类的创建对象通过,抽象类多态即⼦类对象实例化,继承了抽象类的⼦类必需重写⽗类中所有的抽象⽅法或者其本⾝为⼀个抽象类
抽象类不可直接实例化也需要构造⽅法,构造⽅法⽤创建⼦类时数据初始化
接⼝
内容为常量和抽象⽅法
接⼝中的成员变量默认被static和final修饰
⽆构造⽅法
单继承多实现
接⼝可以多继承接⼝
设计应⽤:抽象类是对事物的抽象,接⼝是对⾏为的抽象,例如:门有开,关,附加⼀个报警功能,可通过继承带有开,关功能的抽象类,实现带有报警功能的抽象类。可以理解为抽象类提供共有,接⼝提供特有
作为形参,返回的是它的实现类
内部类
成员内部类(成员变量)
使⽤⽅法,通过外部类创建⼀个⽅法⼀,在该⽅法⼀中创建内部类,实例化外部类,调⽤⽅法⼀
局部内部类 (成员⽅法内)
使⽤⽅法,间接调⽤,通过在外部类的⼀个⽅法中创建内部类
匿名内部类:没有名字的实例化了 类或者接⼝ 的⼦类匿名对象
常⽤API
看⽅法源码,选择⽅法,Crtl+B
Math
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论