变量 静态
!](https://img-blog.csdnimg.cn/20200729200034739.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pkcnlu,size_16,color_FFFFFF,t_70)
public class Demo3 {
public static void main(String[] args) {
Student s1 = new Student();
//s1.name = "张三";
System.out.println(s1.name);
//非静态的成员只能使用引用调用
s1.name = "王五";
//Student.name;
//静态成员可以使用引用调用,也可以使用类名调用
s1.height = 33;
Student.height = 34;
}
}
class Student{
//可以在类中定义变量的时候,直接赋值
//意思是说:当我们在创建对象时,如果不单独赋值,他的name的值就是当前的李四
String name = "李四";//非静态成员变量
int age;//非静态成员变量
static double height;//静态成员变量
//非静态方法
public void run(){
System.out.println("跑");
}
//静态方法
public static void show(){
System.out.println("展示");
// name; 静态方法中不能使用非静态成员
}
}
方法
构造方法:修饰词+方法名字+(参数列表){
方法体}
创建无参的构造方式:会将成员变量默认初始化null/false/0
有参的构造方式:会将成员变量进行初始化并赋值,赋值成传进来的参数
注意:没有返回值、方法名必须和当前的类同名
一旦创建了构造方法,就不会使用系统默认的构造方法
多个构造方法是重载的关系
class Dog{
String name;
int age;
double height;
public Dog(){
System.out.println("这里是无参构造方法")
//this("土狗");//this充当构造方法时,必须放在第一行
}
public Dog(String name){
//this("bing",20,2);//两个构造方法相互调用----死循环
this.name = name;
}
public Dog(String name,int age,double height){
//this充当的是构造方法
this(name);// this.name = name的简写;使得代码更加简洁
this.age = age;//相当于静态类的Dog.age=age
this.height = height;
}
public void run(){
//这里name前面默认有个this
name = "柯基";
System.out.println("跑步");
}
}
this
作用:一种引用数据类型,本身是一个关键字,代表的是当前的对象,保存的是当前对象的地址
功能总结:
1、用来区分成员变量和局部变量
2、可以在构造方法内部调用其他重载的构造方法,提高代码的复用性,简化代码
注意点:
1、不能自己调用自己–死循环
2、不能互相调用–死循环
3、this充当构造方法时,必须放在第一行
4、this在作为方法的时候,只可以充当构造方法,不能作为其他方法
5、this的使用范围就是当前类的内部
6、只有在非静态方法中,才能使用this
代码块
静态代码块:随着类的加载而加载,在整个程序的执行过程中,只执行一次,但是优先于,main
static + {}
作用:对类进行初始化
构造代码块:随着对象的加载而加载,每次创建对象的时候都会执行一次,执行顺序优先于构造方法
构造:{}
作用:对对象进行初始化
可以用代码来证明
static {
System.out.print("a");
}
public static void main(String[] args) {
Pig pig = new Pig();
Pig pig1 = new Pig();
Pig pig2 = new Pig();
Pig pig3 = new Pig();
pig.show();
}
static {System.out.print("b");
}
class Pig{
static {System.out.print("c");}
{System.out.print("d");}
public Pig() {System.out.print("e");}
public void show() {System.out.print("f");}
}
规范
赋值的规范:set
构成:修饰词 返回值 方法名(参数列表){
方法体中的代码
return 返回值}
修饰词:一定是public
返回值:不需要返回,用void
方法名:set+属性的名字,大写首字母
参数列表:与属性同名
return 不需要
取值的规范:get
构成:修饰词 返回值 方法名(参数列表){
方法体代码
return 返回值}
修饰词:public
返回值:类型与属性一致
方法名:get+属性的名字,首字母大写
参数列表内:不需要
代码:没有
return 属性的名字/this.属性的名字
public void setBulletNumber(int bulletNumber ){
//完成过滤
if (bulletNumber < 0){
bulletNumber = 0;
}else {
this.bulletNumber = bulletNumber;
}
}
public int getBulletNumber(){
return this.bulletNumber;
}