1. java8的增强类型
- int——Integer
- char—-Character
- 其他类型都是第一个字母大写
Integer obj=5;
int it=obj;
字符串和基本变量的转换
String intstr="123";
int it1=Integer.pasrseInt(intStr);
int it2=new Integer(intStr);
String s=String.valueof(2.3); //数值转换为字符串
2.处理对象
打印对象
class Person{
......
}
public clas PrintObject{
public static void main(String[] args){
Person p=new Person("孙悟空");
System.out.println(p);
}
}
//
Person@15db9742
//
类名@hashCode
toString(所有的Object对象都有的属性)
==和equals方法
== 比较
- 若是基本变量,直接判断是否相对
- 若是引用对象,,只有他们指向同一个对象才相等
- ==不可以比较类型上没有父子关系的两个对象
equals
- 也需要引用变量指向同一个对象,才返回true
- 和==在使用上无区别
- 实际中需要重写
class person{
private String name;
private String idStr;
public Person(String name,String idStr){
this.name = name;
this.idStr=idStr;
}
// 重写equals
public boolean equals(Object obj){
//两个对象为同一个对象
if(this==obj)
return true;
//只有obj是Person对象
if(obj!=null && obj.getClass()==Person.class){
Person personobj=(Person)obj
//并且当前对象的idStr与obj的idStr相等时才可以判断
if(this.getIdStr().equals(personobj.getIdStr()))
return false;
}
}
}
- “hello”和 “new String(“hello”)”的区别
- hello:使用常量池
- new String(“hello”):产生两个字符串对象:a.常量池;b.堆上
3.类成员
单例类
- 单例类:类始终只能创建一个实例
- private修饰构造器
- static修饰方法
class Singleton{
//使用一个类变量来缓存曾经创建的实例
private static Singleton instance;
//构造函数添加private
private Singleton(){}
//静态方法用于返回自定义控制,且保证只产生一个Singleton
public static Singleton getInstance(){
if(instance==null)
instance = new Singleton();
return instance;
}
}
4. final
- 表示修饰的类,方法,变量不可变
- final方法不可以重写:不希望子类重写父类的方法
- 不可变类:创建该类的实例后,实例的变量不可以改变
- 8个包装类String类是不可变类
1、所有成员变量都是PRIVATE;
2、不提供成员的SET方法;
3、确保所有方法不被重载,FINAL CLASS(强不可变类);所有的方法上面加上FINAL(弱不可变类);
4、如果有必要,重写Object类的hashCode()和equals()
- final修饰,表示引用类型变量不可以重新赋值,但是内容是可以改变的
5. 缓冲实例的不可变量
- 程序需要使用相同的不可变量,则可以将不可变量缓冲
6.抽象类
- abstract
- 抽象类不可以实例化,用于被子类调用
- 抽象方法需要在方法上加abstract
抽象方法:在类中没有方法体的方法,就是抽象方法。
抽象类:含有抽象方法的类就叫抽象类。
抽象类中的抽象方法必须被实现!
如果一个子类没有实现父类中的抽象方法,则子类也成为了一个抽象类!
抽象类中的普通方法,可以不必实现。
作用
1 。抽象类只可以当作父类来继承
7 接口
- 接口只能包括抽象的方法
- implements
接口和抽象类的区别
8. 面向接口的编程
9. 内部类
- 放在另一个类的内部定义