java数据类型和变量

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jpp_aaa/article/details/78665551

1、Java语言把数据类型分为基本类型和引用类型。
这里写图片描述
这里写图片描述
2、字符编码:是指用一串二进制数据来表示特定的字符。
3、基本类型和引用类型的区别
☞基本类型代表简单的数据类型,比如整数和字符。引用类型所引用的实例能表示任意一种复杂的数据结构。
☞基本类型仅表示数据类型,而引用类型所引用的实例除了表示复杂数据类型以外,还能包括操作这种数据类型的行为。
☞Java虚拟机处理引用类型变量和基本类型变量的方式是不一样的:对于基本类型的变量,Java虚拟机会为其分配数据类型实际占用的内存空间;而对于引用类型变量,它仅仅是一个指向堆区中某个实例的指针。
4、用new关键字创建对象有以下作用
☞为对象分配内存空间,将对象的实例变量自动初始化为其变量类型的默认值。
☞如果实例变量在声明时被显示初始化,那就把初始化值赋给实例变量。
☞调用构造方法。
☞返回对象的引用。
5、静态变量和实例变量的生命周期
类的成员变量有两种:一种是被static关键字修饰的变量,叫类变量或静态变量。另一种是没有被static修饰的变量,叫实例变量。
静态变量和实例变量的区别在于:
☞类的静态变量在内存中只有一个,Java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名来访问。静态变量的生命周期取决于类的生命周期,当加载类的时候,静态变量被创建并分配内存,当卸载类的时候,静态变量被销毁并撤销所占内存。
☞类的每个实例都有相应的实例变量。每创建一个类的实例,Java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中。实例变量的生命周期取决于实例的生命周期,当创建实例的时候,实例变量被创建并分配内存,当销毁实例的时候,实例变量被销毁并撤销所占内存。

package dallapp;

public class Scope {
    int x;//实例变量
    int y;//实例变量
    static int z;//静态变量
public void method(int x){
    int y=1;//局部变量
    int z=1;//局部变量
    this.x=x+1;
    this.y=y+1;
    Scope.z=z+1;
    System.out.println("x="+x);
    System.out.println("y="+y);
    System.out.println("z="+z);
    System.out.println("this.x="+this.x);
    System.out.println("this.y="+this.y);
    System.out.println("Scope.z="+Scope.z);
}
    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Scope scope=new Scope();
        scope.method(1);
    }

}

输出结果:
x=1
y=1
z=1
this.x=2
this.y=2
Scope.z=2
6、局部变量的生命周期取决于所属方法何时被调用及结束调用
☞当Java虚拟机(确切的说,是Java虚拟机中的某个线程)调用一个方法时,会为这个方法中的局部变量分配内存。
☞当Java虚拟机,结束调用一个方法时,会结束这个方法中的局部变量的生命周期。
在使用局部变量时受到以下限制:
♥局部变量不能被static、public、protected、private等修饰符修饰。
♥不能通过类名或引用变量名来访问局部变量。
7、成员变量和局部变量名同名
在一个方法内,可以定义和成员变量同名的局部变量或参数,此时成员变量被屏蔽。此时如果要访问实例变量,可以通过this关键字来访问,this为当前实例的引用。如果要访问类变量(静态变量),可以通过类名来访问。
8、参数传递
如果方法A调用方法B,那么就称方法A是方法B的调用者。如果方法B的参数是基本数据类型,那么方法A向方法B传递参数的值。如果方法B的参数是对象或数组,那么方法A向方法B传递对象或数组的引用。
9、为什么Java虚拟机会自动初始化类的成员变量,却要求局部变量必须被显示初始化?
这是因为对于局部变量可能是程序员疏忽,忘记了初始化局部变量,Java编译器在编译阶段强制要求程序员给局部变量赋初始值,可避免潜在的错误。而对于成员变量,Java语言提供了多种初始化途径,即可在声明时初始化,也可在构造方法中初始化(使用与实例变量),还可在静态代码块中初始化(适用于静态变量),假如成员变量的初始值与该数据类型的默认值不相符,程序员一般总会在构造法中显示给它初始化。忘记初始化成员变量的错误不多见。假如程序员没有显示初始化成员变量,Java语言则认为这些变量的初始值刚好和该数据类型的默认值相同,因此提供自动初始化的功能,以简化编程。

猜你喜欢

转载自blog.csdn.net/jpp_aaa/article/details/78665551