封装:
public的类、类属变量及方法,包内及包外的任何类均可以访问;
private的类、类属变量及方法,包内包外的任何类均不能访问;
package修饰符就是默认修饰符,也就是缺省修饰符情况下的修饰符,实际中package 修饰符不能写出。
在字符串扩容中:
String str=“qwe”+“sdf”+“fd”+“erg”;
与
StringBuffer sd=new StringBuffer(“qwe”);
sd.append(“sdf”);
sd.append(“fg”);
sd.append(“erg”);
-----前者比后者效率低。
public class Test1 {
public static void main(String[] args){
String str="qwe"+"sdf"+"fd"+"erg";
System.out.println(str);
}
}
运行结果
qwesdffderg
public class Test1 {
public static void main(String[] args){
StringBuffer sd=new StringBuffer("qwe");
sd.append("sdf");
sd.append("fg");
sd.append("erg");
System.out.println(sd);
}
}
qwesdffgerg
StringBuffer、StringBuilder,对字符串进行操作,而不同的是StringBuffer是线程安全,而StringBuilder是线程不安全(不能同步访问);
static:可以修饰属性和方法,并且属性和方法放在元数据区;
public static 返回值类型 方法名(){}----静态方法
静态在对象存在之前存在,
动态存在则静态一定存在,静态存在而动态不一定存在
动态可以调用静态;而静态不可以调用动动态,如需要则需要先在静态里创建新的对象,再进一步调用即可
元数据区(java1.8以前永久代或为持久代):永远不会消失,因为垃圾回收区不过永久代
动态方法:public 返回值类型 方法名(){}
继承:从类的范畴考虑,先创建一个基础类,
extends:继承,
在类范畴是单继承,一个子类只能继承一个父类,
私有属性可以继承,在子类当中不能直接继承
class Person{
private String name;
private int age;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getAge(){
return age;
}
public void setAge(int age) {
this.age = age;
}
}
class Student extends Person{
}
public class Test1 {
public static void main(String[] args){
Student stu=new Student();
stu.setName("张三");
stu.setAge(30);
System.out.println("姓名:"+stu.getName()+",年龄:"+stu.getAge());
}
}
运行结果
姓名:张三,年龄:30
多态:同一种类的对象表现出不同的状态。
里氏替换原则:所有父类可以完成的工作,子类一定都能完成;
Animal animal=new ZHTYQ();
关键字this和super为动态方法
this:代表本类对象,特指自己
super:代表父类对象,特指父类
小类型转为大类型没有风险,大类型转为小类型有风险,需强制执行