Java语言之关键字(一)

Java语言之关键字(一)

一、private关键字

1、概念

​ private关键字是一个权限修饰符,可以对成员变量用private修饰,还可以对成员方法进行修饰,将其变为私有方法,特别是可以提供对应的getXxxx()方法和setXxxx()方法。被private修饰的成员只能在本类中使用,外界无法访问。

2、创建私有成员变量

class Student {
    private String name;
    private int age;
    //提供公共的set方法,让外界调用set方法来给成员变量设置
    public void setName(String mingzi) {
        name = mingzi;
    }
    public void setAge(int nianling) {
        age = nianling;
    }
    //提供get方法,让外界通过get方法,来获取成员变量的值
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
}

二、this关键字

1、概念

​ this关键字是当前类的对象引用。简单来说,它就代表当前类的一个对象。哪个对象调用这个方法,那么该方法的内部的this就代表这个对象,它重点在于解决局部变量隐藏成员变量的问题。当我们的局部变量和成员变量相同的时候,如果我们不使用this关键字,那么会导致一个问题:就是局部变量隐藏了成员变量的问题。

2、this的应用

class Teacher {
    //私有成员变量
    private String name;
    private int age;
    //提供公共的set方法
    public void setName(String name) {     //成员变量和局部变量重名了
        System.out.println("this代表的那个对象" + this);
        this.name = name;
        //teacher.name=name;
    }
    public void setAge(int age) { //成员变量和局部变量重名了
        System.out.println("this代表的那个对象" + this);
        this.age = age;
    }
    //提供的公共的get方法
    public String getName() {
        return this.name;   //这里的this可加可不加,但建议加上,具有可读性
    }
    public int getAge() {
        return this.age;    //这里的this可加可不加,但建议加上,具有可读性
    }
}

下面的例子是对以上两个关键字的很简单的应用:

创建自己的电脑类,并创建对象调用类中的成员变量和成员方法。

创建自己的电脑类:

public class Computer {
    public String name = ("联想");
    public String model;
    private double size;
    public String type;
    public int cpu;
    {
        System.out.println("电脑的属性和功能如下:");
    }
    public double getSize() {
        return size;
    }
    public void setSize(double size) {
        if (size >= 5 && size < 20) {
            this.size = size;
        } else {
            this.size = 0.0;
            System.out.println("您输入的数据不合格!");
        }
    }
    public void study() {
        System.out.println("电脑可以查资料");
    }
    public int counter(int a, int b) {
        System.out.println("电脑可用于计算,例如:");
        System.out.println("a的值为" + a + "," + "b的值为" + b);
        int sum = a + b;
        return sum;
    }
    public void internet() {
        System.out.println("电脑可以网上冲浪");
    }
    public void chat(String name) {
        System.out.println("电脑可用于聊天,例如:");
        System.out.println("可以和" + name + "聊天");
    }
    public void sendMsg(String name, String content) {
        System.out.println("电脑可用于发消息,例如:");
        System.out.println("可以给" + name + "发短信,内容是:" + content);
    }
    public void playGame() {
        System.out.println("电脑可以玩游戏");
    }
}

创建对象并调用类中的属性和功能:

public class MyTest {
    public static void main(String[] args) {
        Computer computer = new Computer();
        String name = computer.name;
        computer.model="V310";
        System.out.println("电脑的名字是:"+name);
        System.out.println("电脑的型号是:"+computer.model);
        computer.setSize(16.1);
        double size= computer.getSize();
        System.out.println("电脑的尺寸为:"+size+"寸");
        computer.setSize(21.0);
        double size2=computer.getSize();
        System.out.println("电脑的尺寸为:"+size2+"寸");
        int sum=computer.counter(10,10);
        System.out.println("a与b的和为:"+sum);
        computer.chat("小娟");
        computer.sendMsg("小明","在吗");
        computer.playGame();
    }

输出结果为:
在这里插入图片描述

三、static关键字

1、概述

​ static关键字可修饰成员变量和成员方法,被static所修饰的成员变量,是一个共享变量,被类的所有对象所共享,随时类的加载而加载(随着 .class文件进内存,静态的东西就会加载),优先于对象而存在。比如一个班级的学生共用同一个班级编号,啥专业啥班级。
​ 反言之,如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。比如饮水机就是被大家所公用的,用静态修饰;而水杯一般是私人用品,不能用静态修饰。
​ static关键字修饰的成员本身可以通过对象名调用,但建议通过类名调用,因为静态修饰的内容一般我们称其为与类相关的或者是类成员。

2、static关键字的应用

(1)静态变量属于类,所以使用类名直接调用即可。

public class MyTest {
    public static void main(String[] args) {
        // 静态变量,推荐使用类名直接调用
        A.b=500;
        int b = A.b;
        System.out.println(b);
        //a.show();
        A.show();//静态方法,推荐使用类名直接调用
    }
}
class A{
    double a=100;
    static int b=1000; //共享变量
    public static void show(){
        System.out.println("这是一个静态的show方法");
    }
}

(2)在静态方法里面,只能访问静态变量,非静态变量访问不到,因为先存在的访问不到后存在。而在非静态方法里面,既可以访问静态的,也可以访问非静态的。

例如下面的一段代码:

public class MyTest {
    public static void main(String[] args) {
        B a = new B();
        a.show();
        B.staticShow();
    }
}
class B{
    int a=10;
    static double num=100;
    //非静态方法里面,既可以访问静态方法,也可以访问非静态方法
    public void show(){
        System.out.println("打印a:"+a);
        System.out.println("打印num:"+num);
    }
    //静态方法,只能访问静态方法
    public static void staticShow(){
        System.out.println("打印num:"+num);
    }
    public static void test2() {
       //this.show();//静态方法里面,不能存在this this代表一个对象,对象还是后来有的,先有的,不能
       访问后来有的
        staticShow();
    }
}

其打印结果为:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/changjinfeng123/article/details/89206755
今日推荐