package test;
public class Student {
private String name;
private String gender;
private int age;
private double score;
private String classRoom;
private static String clothSize="41码";//静态变量
public void print(){
System.out.println(this.name+" "+this.gender+" "+this.age+" "+this.score);
}
@Override
public String toString() {
// return super.toString();
return "{"+name+","+gender+","+age+","+score+"}";
}
//Alt+Insert键能够快捷创建Constructor--构造方法,ctrl按住可全选对象属性
public Student(String name, String gender, int age, double score, String classRoom) {
this.name = name;
this.gender = gender;
this.age = age;
this.score = score;
this.classRoom=classRoom;
}
public void setName(String name){
this.name=name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public String getName(){
return name;
}
public String getClassRoom() {
return classRoom;
}
public void setClassRoom(String classRoom) {
this.classRoom = classRoom;
}
public static String getClothSize() {
return clothSize;
}
public static void main(String[] args) {
Student s1=new Student("阿黄","男",3,20,"bite100");
Student s2=new Student("阿绿","男",2,19,"bite101");
Student s3=new Student("阿红","女",1,18,"bite102");
s1.print();
s2.print();
s3.print();
//public String toString():ctrl+O键快捷创建访问对象,System.out.println(s1),访问对象
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}
}
package test;
public class TeatStudent {
public static void main(String[] args) {
//想要打印Student静态成员变量getClothSize="41码":
//就需要调用getter and setter 方法:Alt+Insert键
System.out.println(Student.getClothSize());
}
}
在Java中,被static修饰的成员,称之为静态成员,也可以称为类成员,其不属于某个具体的对
象,是所有对象所共享的
package test;
public class Dog {
//普通成员变量,非静态成员变量
//1、就地初始化
//2、构造方法中初始化
//3、构造代码块||实例代码块
private String name;
private String gender;
private int age;
private String color;
//构造代码块||实例代码块
{
name="老八";
gender="雄性";
System.out.println(name+" is "+gender);
}
{
age=4;
color="金黄色";
System.out.println(age+" "+color);
}
{
System.out.println("3333333");
}
public static void main(String[] args) {
Dog d=new Dog();
System.out.println("=======");
}
}
注意: 1、在一个类中可以有多个实例代码块; 2、实例代码块在每次创建对象时都会被执行,目的是为了将对象中的成员初始化完整 3、创建对象时,多个代码块会按照在类中出现的先后次序依次执行 4、实例代码块中的内容:将来会按照其在类中的声明的先后次序被拷贝到构造方法中,并且拷贝构造方法中的第一条语句之前
package test;
public class Cat {
private String name;
private String gender;
private int age;
private String color;
private static int a=10;//1、就地初始化
@Override
public String toString() {
return super.toString();
}
//2、采用静态代码块:使用static修饰的代码块,只能初始化静态成员,不能出始化实例变量
static{
a=100;
//name="小红",代码报错
System.out.println("111111");
}
private static int b=4;
static{
b=5;
System.out.println("222222");
//System.out.println(this);静态代码块不能访问this
}
{
this.name="小红";
int a=10,b=89;
System.out.println("构造代码块");
}
public static void main(String[] args) {
Cat c1=new Cat();
System.out.println("================");
Cat c2=new Cat();
System.out.println("================");
Cat c3=new Cat();
}
}
总结 1、一个类中可以有多个静态代码块 2、静态代码块内部只能初始化静态成员变量,不能初始化实例变量(找实例代码块),也不能使用this 3、多个静态代码块最终按照其在类中出现的先后次序,被整合到cinit方法中了---cinit是编译器生成的 所有静态代码块中的内容都是按照其在类中出现的先后次序被合并到cinit中 4、静态代码块中的内容只会被执行一次,--在类加载的时候被执行---即:cinit在类加载的时候被执行 静态代码块执行的次数与创建的对象的个数无关 wenbo
本文含有隐藏内容,请 开通VIP 后查看