3.26学习总结

本文详细介绍了Java中的实例变量(成员变量)、类变量以及局部变量的区别,强调了`this`关键字的作用,构造器的使用以及`private`和`public`访问修饰符。此外,还对比了直接赋值和通过`new`操作符创建String对象的不同存储机制。
摘要由CSDN通过智能技术生成

java

实例变量和局部变量

实例变量是记录这个类中对象的特点的每一个对象的实例变量都可以不同(例如名字,性别等),其中一个对象的实例变量改变不会影响其他的变量.

类变量是一种特殊的实例变量,他的特殊在于所有的对象的类变量都是相同的,当一个对象改变了类变量那么所有对象的类变量都会改变(可以视为所有的对象共用同一个类变量),

局部变量与c语言中的局部变量基本相同,只生存在固定的函数内(一般定义在方法中).

实例变量(成员变量),静态变量(类变量).

定义方式

 public class girl {
    private int age;                            //实例变量
    public static int gender;                //类变量
    public girl() {

    }

    public girl(int age) {
        int t;                                  //局部变量
        if (age >= 18 && age <= 50)
            this.age = age;
        else
            System.out.println("错误");
    }
}

 this

在上述代码中出现了this这个关键字,这个关键字使用来区分局部变量和实例变量的,this中储存的是调用这个方法的对象的地址,它可以通过对象地址来准确的调用到对象的实例变量.

构造器

构造器是在调用这个类来创建对象同时给他赋初值的时候使用的,如果在一个类中没有编写构造器,那么默认是只有一个空参数的构造器.

在编写构造器时要注意,一旦自己编写了构造器系统便不会给予空参数的构造器,所以当编写时要手动编写.

代码

 public class girl {
    private int age;
    public static int gender;
    public girl() {               //空参的构造器

    }

    public girl(int age) {               带参的构造器
        int t;
        if (age >= 18 && age <= 50)
            this.age = age;
        else
            System.out.println("错误");
    }
}

private和public

当一个变量定义前有private这个前缀代表这个变量无法在其他类中被改变只能在所定义的类中进行改变,好处是可以保护数据不被滥用.public则可以在任何类被改变.

如果想改变前缀有private的变量可以这样

 public class girl {
    private int age;
    public static int gender;
    public girl() {

    }

    public girl(int age) {
        int t;
        if (age >= 18 && age <= 50)
            this.age = age;
        else
            System.out.println("错误");
    }
    public void setage(int x) {                 //改变方式
        if (x >= 18 && x <= 50)
            age = x;
        else
            System.out.println("错误");
    }
}

String类

String定义的变量有两种赋值方式一种是通过直接赋值的方式,另一种则是通过new来进行赋值.

这两种赋值方式不同的点在于赋值的字符串存储地方不同.

当直接赋值时,字符串会存储在堆区一个特殊的地方,String存储的是这个字符串的地址,当变量被赋值字符串时,系统会扫描这个区域,如果发现一样的字符串则将这个字符串的地址赋给它.也就是说两个变量所储存的地址是同一个.

new赋值的变量则不同,new会在堆区新建一个空间来储存字符串.

当他们被用来比较时就可以看出来(因为比较的是地址).

public class Main {
    public static void main(String[] args) {
        String a="jjm";                         //直接赋值
        String b=new String("jjm");             //通过new赋值
        String c="jjm";
        System.out.println(a==b);
        System.out.println(a==c);
    }
}

这个程序运行的结果是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值