方法的重载:访问修饰符,返回值类型,方法名一致,但是方法中的参数列表不一致
方法的重写:访问修饰符,返回值类型,方法名和参数列表都一致,但是方法中的内容不一致
类和对象:类是一个模子,是对一类事物的抽象,一个类包含这一类事物具有的相同属性和行为;而对象是对类的实例化,他具有这一类事物的共有属性和行为,而且他可能还有这一类事物共有的属性和行为所没有的属性和行为
static:
静态变量:类中共享一个静态成员变量,他属于类所拥有,可以直接使用类名访问,没有实例化就可以调用;;当系统第一次使用该类的时候,就会为其分配内存空间在方法区,当卸载时才进行资源回收
静态方法:可以调用同类的静态成员和静态方法,但是不能调用同类的非静态成员和方法
静态块:只在类加载时,执行一次,静态块只能给静态变量赋值,不能初始化普通的成员变量
静态内部类:不能直接访问外部类的非静态成员,
面向对象的三大特征:继承,多态,封装
继承:单继承模式;除private外,子类可以拥有父类的所有属性和方法;继承实现了代码的复用;;继承的初始化顺序:初始化父类再初始化子类;如果父类仅有一个有参构造方法时,子类必然有且仅有一个和父类相同参数列表的构造方法
final:
final变量:只能赋值一次,为常量
final属性:不会隐式初始化,类的初始化必须有值,或者在构造方法中赋值,且只能选其一
final方法:不允许重载和重写
final类:不允许被继承
接口:包括全局常量和公共抽象方法(私有化的抽象方法不能被继承,此方法就没有了意义),接口定义了一批类需要遵守的规范,接口不关心这批类的内部数据,也不关心这类方法的实现细节,接口只规定这批类必须提供这些方法
异常:异常的顶级父类为Throwable类,该类分为:Error(虚拟机错误,系统错误,内存溢出)和Exception(编码,环境,用户操作,输出输入问题)
面向对象:面向对象就是把现实中的事物归纳总结抽象成一类事物;面向对象是以对象为中心;先开发类,得到对象,通过对象之间的通信实现功能;先有数据结构,再有算法;耦合度低,易维护,易复用,易扩展,系统灵活,但类需要实例化,开销大,比较消耗资源
参数在程序语言中分为形式参数和实际参数
形式参数:只在被调用时才分配内存单元,在调用结束时,立刻释放所分配的内存单元,因此,形参只在函数内部有效,函数调用返回主调函数后不能再使用形式参数
实际参数:调用有参方法时,实际参数把值传给形式参数
引用传递:指调用函数时将实际参数的地址赋给到形式参数,那么在函数中对参数进行修改,将会影响实际参数
值传递:是指在调用函数时将实际参数的值复制一份传递到函数中,那么在函数中对参数所进行的修改将不影响实际参数
Java中都是值传递(共享传递),就算传递的是对象也是把对象的地址复制一份给形式参数,若形式参数在方法中创建一个新的对象,则形式参数指向一个新的地址,修改的是新对象的值,原对象不发生改变,若形式参数在方法中不创建一个新的对象,则修改的是原对象,原对象的值发生改变
String:
因为字符串是常量,所以他们的值在创建之后不能被更改,String对象创建不能被修改,是不可变的,所谓的修改其实是创建了一个新的对象,所指向的内存空间不同
如果需要一个可以改变的字符串,可以使用StringBuffer和StringBuilder
String每次new对象都会产生一个新的对象,即使使用‘==’比较俩对象,结果也为false,如果需要比较内容使用equals方法
构造方法:
String(byte[] bytes):把字节数组转换成字符串,若数组为数字,则通过ASCII转化成对应的字母
String(byte[] bytes,int index,int length):将字节数组从索引index处一共length个转换成字符串
String(char[] value):把字符数组转化成字符串
String(char[] value,int index,int count):把字符数组从索引index处开始,一共count个转化成字符串
方法:
int length():返回此字符串的长度
boolean isEmpty():如果length()为0,返回true,否则返回false
char charAt(int index):返回指定索引处的char值,索引范围为0-length()-1
void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin):要复制的第一个字符从srcBegin开始,要复制的最后一个字符位于索引的srcEnd-1处(因此要复制的字符总数是srcEnd-srcBegin),要复制到dst子数组的字符从索引dstBegin处开始,并结束于dstBegin+(srcEnd-srcBegin)-1
byte[] getBytes(String charsetName):使用指定的字符集将String编码成byte序列,并将它存储到一个新的byte数组中
boolean contentEquals(StringBuffer sb):将指定的字符串与StringBuffer比较,当且仅当String的内容和StringBufer内容相同时,返回true
int compareTo(String anotherString):按字典顺序比较两个字符串,如果按字典顺序此String对象位于参数字符串之前,则比较结果为负整数,如果按字典顺序此String对象位于参数字符之后,则比较结果为正整数,如果两个字符串相等,则结果为0
int hashCode():返回此字符串的哈希码
int indexOf(int ch):返回指定字符在此字符串第一次出现处的索引
int indexOf(int ch,int fromIndex):从指定的索引开始搜索,返回在此字符串中第一次出现指定字符处的索引
int indexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引
String subString(int beginIndex):返回一个新字符串,他是此字符串的一个子字符串,该子字符串从索引处开始,直到字符串末尾
String subString(int beginIndex,int endIndex):返回一个新字符串,他是此字符串的一个子字符串,该字符串从指定的beginIndex开始,直到索引endIndex-1处的字符,因此该字符串的长度为endIndex-beginIndex
String concat(String str):将指定字符串连接到此字符串的结尾
boolean contains(CharSequence s):当且仅当此字符串包含指定的char值序列时,返回true
String toLowerCase():将String中的所有字符都转换成小写
String toUpperCase():将String中的所有字符都转换成大写
char[] toCharArray():将此字符串转换成一个新的字符数组
String valueOf(Object object):将Object类型的object对象转换成String类型,等价于object.toString()
将String类型转化成int:Integer.parseInt(String s)
=和equals的区别
==比较的是变量栈内存中存放的对象的对内存地址,用来判断两个对象的地址是否相同,及两个索引是否指向相同对象
equals用来比较的是两个对象的内容是否相等,由于所有类都继承Object类,所以适用于所有对象
线程安全是指在多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完成后,其他线程才能开始使用,不会出现诗句不一致或数据污染
线程不安全指不提供数据访问保护,有可能出现多个线程先后更改数据后造成所得到的数据时脏数据
ArrayList是非线程安全,Vector是线程安全的;HashMap是非线程安全的,HashTable是线程安全的;Stringbuild是线程不安全的,StringBuffer是线程安全的