1,Scanner input=new Scanner(System.in);什么意思?
扫描从控制台输入的字符。
Scanner是用于扫描输入文本的类名,input仅仅是对象名,你可以换成任意的非java保留着,如a、b、c都行,new是给对象new(开辟)一个空间存储扫描进来的东西,System.in 是PrintStream(字节打印流)的一个实例 ,只能按字节读取。
Scanner -是java类库的一个基础类,一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
input -声明的变量名。
new Scanner() -给变量input分配空间,初始化,实例化。
System.in -参数, 这里就是获取输入流的意思。
2,
常用方法1:boolean equlas(Object)
作用:判定两个引用是否相同。
String类中的equlas方法是比较引用?不是,比较内容是否相同,为什么?
因为String类重写了equlas方法.
public class Student {
protected String name;
protected int age;
@Override
public boolean equals(Object obj) {
if(this==obj){//比较地址
return true;
}
if(obj instanceof Student){//参数是否是student类型
Student s=(Student) obj;
if(this.name.equals(s.getName()) && this.age==s.getAge()){
return true;
}
}
return false;
}
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
Student s1=new Student("lina", 18);
Student s2=new Student("lina", 18);
System.out.println(s1==s2);//false 比较引用
System.out.println(s1.equals(s2));//true 比较内容,调用student类中重写的equlas方法
}
3,
19.2常用方法2:String toString()
返回对象的String格式
在使用System.out.println(对象名),打印一个对象的时候,系统会自动调用toString()方法。
4,
//静态属性--不依赖与对象/实例,所有的对象拥有同一个属性空间
所有对象公用同一块空间,一个对象改变了其中的值,其他人使用的时候也发生了变化
静态内容在整个应用程序中只有一块空间。
静态方法中不能使用this
静态方法不能被继承
静态方法中可以使用静态方法/静态变量
静态方法中不能使用实例方法/实例属性
静态代码块:
{ }代码块
static{ }静态代码块
作用:为类中的静态属性初始化。
静态代码块的执行比构造方法更靠前,在类的加载的时候执行,而且只执行一次。
5,
静态方法、静态属性:不属于实例的时候声明成静态的;
在java中有一组静态方法的类,称之为工具类。这种类中的所有内容都是静态的,方法也是
基本功能的方法,例如Math类,Arrays类。
自己写工具类的时候类中的内容一般都是静态方法和静态属性。
百度的:一般情况下是不可以用static修饰类的。如果一定要用static修饰类的话,通常static修饰的是匿名内部类。
6,
25.1 如何创建一个接口
关键字: interface
格式: public interface 接口名称{
Public static final 属性;
Public abstract 返回值类型 方法名称();
}
public interface IRun {
//接口中的属性--默认有public static final 的修饰词
//属性都是常量,所以必须声明的同时赋值;命名规则:所有字母都大写
public int NUM=0;
//接口中的方法--默认都是public abstract
public void run();
}
7,
25.3 接口中的细节
1、接口与接口可以有继承关系,使用的关键字也是extends
2、在Java中支持单继承,但是支持多实现。
public class Student implements IRun,IMyInter{
3、Java中的类可以继承一个父类的同时实现多个接口,但是需要先写继承后写实现
//既有继承又有实现的时候,先继承后实现
public class Student extends Person implements IRun,IMyInter{
4、接口也支持多态
接口的多态 类的多态步骤:
1、类实现接口 有继承关系
2、类重写接口未实现的方法 子类重写父类的方法
3、接口的引用指向实现类的实例 父类的引用指向子类的实例
4、接口的引用调用实现类重写的方法 父类的引用调用子类重写的方法
5、接口 引用=new 实现类(); 父类 引用=new 子类();
30、接口和抽象类的对比
接口的特征:
1、接口不可以被实例化;
问题:接口不能被实例化,但是接口的引用可以指向子类的实例.?
解答:interface test{} class test1 extends test{} test t = new test() //错误 test t = new test1();//正确
2、接口的实现类必须实现接口的所有方法;
3、实现类可以实现多个接口
4、接口中的变量都是静态常量。
两者的区别:
1、接口是公开的,接口内不能有私有的方法和变量,而抽象类可以有私有的方法和变量
2、实现接口的类一定要实现接口里的所有方法,而继承抽象类可以有选择的重写需要用到的方法;
3、接口可以实现多继承,而类只能单继承。
8,
31.1 String类是一个非常特殊的类,因为有常量池的存在。
8,
//将字符串转换为日期类型
Date date1=sf.parse(s1);
Date date2=new Date();//获取当前日期
//将日期转换为字符串
String s2=sf.format(date2);
9,包装类(指的Integer,Double这种)的类型转换到String都用toString方法();