静态成员变量 与实例成员变量
package com.ITheima; public class User { // 在线人数信息,静态成员变量 public static int onLineNumber; //实例成员变量 private String name; private int age; public static void main(String[] args) { //1 类名.静态成员变量 User.onLineNumber++; //注意 :同一个类中访问静态成员变量,类名可以不写 System.out.println(onLineNumber); //2对象 实例成员变量 User u1=new User(); u1.name="张飞"; u1.age=17; System.out.println(u1.name); System.out.println(u1.age); //静态成员变量(不推荐这样访问) u1.onLineNumber++; System.out.println(onLineNumber); } }
package com.ITheima; public class Student { private String name; private int age; /** * 实例方法 :无static修饰 属于对象,通常表示对象直接的行为,可以访问对象的成员变量 */ public void study(){ System.out.println(name+"在好好学习天天向上"); } /** * 静态方法: 有static修饰,可以呗类和对象共享访问 */ public static void getMax(int a,int b){ System.out.println(a>b?a:b); } public static void main(String[] args) { //1 类名.静态方法 Student.getMax(100,20); //注意 在同一个类中访问静态方法 类名可以省略不写 getMax(20,50); //2 对象.实例方法 Student s=new Student(); s.name="张全蛋"; s.study(); //3 对象.静态方法(不推荐) s.getMax(399,11); } }
个人总结:
即 静态变量/方法为类的成员和方法 不需要实例化 就可以通过 类名.成员/方法 调用
实例成员变量/方法 必须通过类实例化产生的对象 通过 对象.成员/方法调用
代码块
静态代码块 代码
package com.ITheima._static_codeblock; public class TestDemo { //类的静态成员变量 public static String schoolName; //静态方法 public static void main(String[] args) { //目标: 学习静态代码块的特点,基本作用 System.out.println("===========main方法被执行输出=========");//2 System.out.println(schoolName);//黑马程序员 } /** *静态代码块随类加载 自动触发一次(优先执行) * 作用:可以在程序加载时进行静态数据的初始化操作(准备内容); * */ static { System.out.println("静态代码块执行1");//1 schoolName = "黑马程序员"; } }
构造代码块 代码
package com.ITheima._static_codeblock; public class TestDemo1 { //实例成员变量 private String name; private int age; //无参构造器执行 /** * 构造代码块 优先构造器执行 * 与对象一起加载 ,自动触发 */ { System.out.println("==构造代码块被触发执行一次=="); name="王二麻子"; } public TestDemo1(){ System.out.println("===构造器被触发执行==="); } public static void main(String[] args) { //目标:学习构造代码块的特点,基本作用 //实例化对象 TestDemo1 s=new TestDemo1(); System.out.println(s.name); TestDemo1 s1=new TestDemo1(); System.out.println(s1.name); } }