- 1、变量
- 1)成员变量和局部变量
- 2)举个栗子
- 2、方法
- 1)有无返回值的方法
- 2)使用
- 3、静态 static
- 1)写法
- 2)使用
- 3)静态的作用
咱们前面文章说过,在类中方法外定义的变量叫做成员变量,很明显,它的使用范围是在本类中都能使用;
那什么是局部变量呢?就是定义在方法里面,或者方法声明部分的变量,总之一个特征就是使用范围被缩小了;
当有局不变量的名字和成员变量相同时,会覆盖掉成员变量;
package oc8;
public class Test {
//成员变量:定义在类中方法外
public String name;
//定义一个打招呼的方法
public void sayHello() {
//局部变量,方法里面的局部变量只能在方法中使用,而不能在外面使用
int a = 1;
//类中定义的方法能给类中的方法使用
System.out.println(name+",你好!");
//这里的局部变量把上面的成员变量覆盖掉了
String name = "李四";
System.out.println(name+",你好!");
}
public static void main(String[] args) {
Test test = new Test();
test.name = "张三";
test.sayHello();
}
}
输出:
张三,你好! 李四,你好!2、方法
还记得一般方法的语法格式吗?
访问修饰符 [可选的关键字] 返回值类型 方法名([可选的参数列表]) {
//写代码的地方
}
所以,看你怎么分类,根据返回值类型可以分有返回值方法和无返回方法;根据参数列表又可以分为无参方法和有参方法…不管你怎么分,只要记住语法格式就对了。
1)有无返回值的方法无返回值,那就是返回值类型是 void,有返回值那就看需求让写的返回什么,返回什么就写什么数据类型
package oc8;
public class Test {
//无返回值方法
public void hello() {
System.out.println("你好");
}
//获取数学成绩的方法
public double getMathScore() {
return 90;
}
//上面两个是无参方法,这里写个有 1 个参数的
public void hello(String name){
System.out.println("你好,"+name);
}
}
2)使用
public static void main(String[] args) {
Test test = new Test();
//无参方法调用
test.hello();
//有参方法调用, 方法声明的参数是什么类型,你就传个什么样的数据就好了
test.hello("李四");
//有参方法调用,返回一个数据
int score = test.getMathScore();
System.out.println("数学成绩:"+score);
//直接输出的话,也可以不用专门定义一个变量,可以直接输出,作用是一样的
System.out.println("数学成绩:"+test.getMathScore());
}
3、静态 static
还记得 main 方法中的那个 static 吗,咱们说过它代表“静态的”。
它可以修饰类、属性和方法,这里只讲静态的属性和方法
只要你记得如何定义一个成员变量或者如何定义一个方法,你就会定义静态的变量和方法,因为只需要在原来基础上,加在访问修饰符后面即可,so easy
package oc8;
public class Test {
//静态变量
public static int num = 10;
//静态方法
public static void printNum() {
System.out.println("num="+num);
}
static {
System.out.println("这是一个静态块");
}
}
咱们之前说过,静态修饰的内容会优先加载,静态的内容生命周期和类相同,而普通成员变量和方法的生命周期和对象相同,别忘了对象是类 new 出来的,自己体会下。
静态变量又叫类变量;静态方法又叫类方法;
既然静态的名字挂上了类的头衔,那么使用方式是略比一般的逼格高一点的,在上面的例子中加上 main 方法:
public static void main(String[] args) {
//静态调用:直接类名.属性 或 类名.方法名()
System.out.println("num="+Test.num);
Test.printNum();
//静态的也可以用下面传统方式调用,但是官方不推荐这么做
//人家都不推荐了,而且代码写的多,再用这种方式岂不是有病吗
// Test t = new Test();
// t.printNum();
}
输出:
这是一个静态块 num=10 num=10
看来静态块优先执行啊,带"块"的优先执行权都比较高
3)静态的作用static 修饰的内容加载时机早,所以开发时可以把需要先处理的事情写在静态方法或者静态代码块里。
static 修饰的变量既然是与类的生命周期相同,跟类同生共死,那类是啥,类相当于是一类对象的一个模板,类是可以 new 很多对象的,所以,static 修饰的内容可以被多个对象共享。
package oc8;
public class User {
//小明和小红的妈妈给了他俩100零花钱,
//小明一次花20,小红一次花10,每人各花一次
public static int balance = 100;
//另外小明和小红自己还有10元,
//每次都会额外花自己的 1 元,每人各花一次
public int selfBalance = 10;
//定义用户花钱的方法,
//因为每个人花的钱不一样,这里作为一个可变的参数传递进来
public void pay(int money) {
balance = balance - money;
}
public void pay1() {
selfBalance = selfBalance - 1;
}
public static void main(String[] args) {
User xiaoming = new User();
xiaoming.pay(20);
xiaoming.pay1();
User xiaohong = new User();
xiaohong.pay(10);
xiaohong.pay1();
System.out.println("两人共有的余额:"+User.balance);
System.out.println("小明自己的零花钱:"+xiaoming.selfBalance);
System.out.println("小红自己的零花钱:"+xiaohong.selfBalance);
}
}
运行结果:
两人共有的余额:70 小明自己的零花钱:9 小红自己的零花钱:9
学习 Java 的小伙伴,也可搜索并关注公众号 taishangcode 进行同步学习。



