java变量的区别浅析

类变量也叫静态变量,也就是在变量前加了static 的变量;
实例变量也叫对象变量,即没加static 的变量;
两者区别在于:
类变量(静态变量)是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果,并且类变量是可以直接通过类名来调用的 如:A.xingS;
而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象,实例变量顾名思义是属于实例的,所以只能通过实例来调用 如:A a=new A(); a.name;
举个不太恰当的例子:类变量就好比一个人的姓氏,实例变量就相当于人的名字,如果它父亲把姓改了,那它所有的兄弟姐妹姓都得改,但是它们的名字还是各用各的。
例:


代码如下:

public class A{ 
static  int xingS = 0; //类变量  
private int name = 0; //实例变量  
String id; //实例变量 
private String colorType; //实例变量  
private int size; //实例变量  
private static String depart; //类变量   f
inal String name="zwm"; //常量
}
public class B{  
public void main (String[] args){      
A son1= new A();      
A son2= new A();      
son1.xingS = 3;  // 等同于
A.xingS = 3;      
son1.name = 4 ;      
System.out.println(son2.xingS); //结果为3      
//类变量是针对所有对象的,所以son1改变xingS,son2的a也改变      
System.out.println(son2.name); //结果为0      
//实例只改变自身的,所以son1对象的name改变,不影响对象son2的name变量 
}
}

类变量又叫静态成员变量,它不需要创建对象就可以已经在内存中存在了,而在创建实例对象的时候,
内存中会为每一个实例对象的每一个非静态成员变量开辟一段内存空间,用来存储这个对象所有的非静态成员变量值。
即使两个不同的实例对象是属于同一个class类,但是它们的同名非静态成员变量在内存中占用的空间是不同的,
而静态成员变量也就是类变量相同。所有的实例对象都共用一个类变量,内存中只有一处空间是放这个类变量值的。
因此,如果一个对象把类变量值改了,另外一个对象再取类变量值就是改过之后的了。

(0)

相关推荐

  • Java类变量和成员变量初始化过程的应用介绍

    一.类的初始化 对于类的初始化:类的初始化一般只初始化一次,类的初始化主要是初始化静态成员变量. 类的编译决定了类的初始化过程. 编译器生成的class文件主要对定义在源文件中的类进行了如下的更改: 1)       先按照静态成员变量的定义顺序在类内部声明成员变量. 2)       再按照原java类中对成员变量的初始化顺序进行初始化. 一个java类和编译后的class对应的转换如下: 源文件: 复制代码 代码如下: public class Person{ public static S

  • 浅谈Java变量的初始化顺序详解

    规则1(无继承情况下):对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序依次是(静态变量.静态初始化块)>(变量.初始化块)>构造器证明代码: 复制代码 代码如下: public class InitialOrderTest {    // 静态变量    public static String staticField = "静态变量";    // 变量    public String field = "变量";    // 静

  • java使用异或实现变量互换和异或加密解密示例

    复制代码 代码如下: import java.util.Scanner; public class VariableExchange {    public static void main(String[] args){        System.out.println("请输入变量A的值");        Scanner scanner=new Scanner(System.in);        long A=scanner.nextLong();        System

  • java多线程编程之使用Synchronized块同步变量

    下面的代码演示了如何同步特定的类方法: 复制代码 代码如下: package mythread; public class SyncThread extends Thread{ private static String sync = ""; private String methodType = ""; private static void method(String s) {  synchronized (sync)  {sync = s;System.out

  • Java并发编程示例(九):本地线程变量的使用

    共享数据是并发程序最关键的特性之一.对于无论是继承Thread类的对象,还是实现Runnable接口的对象,这都是一个非常周重要的方面. 如果创建了一个实现Runnable接口的类的对象,并使用该对象启动了一系列的线程,则所有这些线程共享相同的属性.换句话说,如果一个线程修改了一个属性,则其余所有线程都会受此改变的影响. 有时,我们更希望能在线程内单独使用,而不和其他使用同一对象启动的线程共享.Java并发接口提供了一种很清晰的机制来满足此需求,该机制称为本地线程变量.该机制的性能也非常可观.

  • java中成员变量与局部变量区别分析

    本文实例分析了java中成员变量与局部变量区别.分享给大家供大家参考.具体分析如下: 成员变量:在这个类里定义的私有变量,属于这个类. 创建以及使用成员变量 复制代码 代码如下: public class Person {     String name;     String Sex;     int age;     double Height;         public static void main(String arges[])     {         Person p=ne

  • Java环境变量的设置方法(图文教程)

    安装JDK 向导进行相关参数设置.如图: 正在安装程序的相关功能,如图: 选择安装的路径,可以自定义,也可以默认路径.如图: 成功安装之后,进行测试是否真的成功安装,点击[开始]----[运行]----输入 CMD,在命令提示符里面输入"Java -version"并按回车键,出现下图,即为安装成功.如图: 下面开始配置环境变量,右击[我的电脑]---[属性]-----[高级]---[环境变量],如图: 选择[新建系统变量]--弹出"新建系统变量"对话框,在&quo

  • java中静态变量和实例变量的区别详细介绍

    运行效果: 控制台效果: ================================================== 代码部分 ================================================== /hello_test/src/com/b510/test/StaticTest.java 复制代码 代码如下: /**  *   */ package com.b510.test; /**  * 在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例

  • Java两个变量的互换(不借助第3个变量)具体实现方法

    创建一个类,在该类中定义两个变量并为其指定初始值,然后交换两个变量的值,要求不允许借助第三个变量,只能使用异或运行实现两个变量值的交换. 复制代码 代码如下: import java.util.Scanner;public class VariableExchange {    public static void main(String[] args){        System.out.println("请输入变量A的值");        Scanner scanner=new

  • java变量的区别浅析

    类变量也叫静态变量,也就是在变量前加了static 的变量:实例变量也叫对象变量,即没加static 的变量:两者区别在于:类变量(静态变量)是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果,并且类变量是可以直接通过类名来调用的 如:A.xingS:而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象,实例变量顾名思义是属于实例的,所以只能通过实例来调用 如:A a=new A(); a.name:举个不太恰当的例子:类变量就好比一个人的姓氏,实例变量就相当于人的名

  • JavaScript变量声明var,let.const及区别浅析

    var声明变量的作用域限制在其声明位置的上下文中 var x = 0; // x是全局变量,并且赋值为0. console.log(typeof z); // undefined,因为z还不存在. function a() { // 当a被调用时, var y = 2; // y被声明成函数a作用域的变量,然后赋值成2. console.log(x, y); // 0 2 function b() { // 当b被调用时, x = 3; // 全局变量x被赋值为3,不生成全局变量. y = 4;

  • 简单了解java局部变量与成员变量的区别

    这篇文章主要介绍了简单了解java局部变量与成员变量的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 package java04; /* 局部变量和成员变量的不同: 1.定义的位置不一样 局部变量:定义在方法内部 成员变量:在方法外部,直接写在类中 2.作用范围不一样 局部变量:只有方法中能使用,除了方法就不能用 成员变量:整个类都可以用 3.默认值不一样 局部变量:无默认值,先赋值在使用 成员变量:如果没有赋值有默认值 4.内存的位置不

  • JavaScript中const、var和let区别浅析

    在JavaScript中有三种声明变量的方式:var.let.const.下文给大家介绍js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始化. const b = 2;//正确 // const b;//错误,必须初始化 console.log('函数外const定义b:' + b);//有输出值 // b = 5; // console.log('函数外修改const定义b:' + b);//无法输出 2.var定义的变量可以修改,

  • 浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅在类中生效.即只在存储过程中的begin和end之间生效. 2.@set定义的变量,叫做会话变量,也叫用户定义变量,在整个会话中都起作用(比如某个应用的一个连接过程中),即这个变量可以在被调用的存储过程或者代码之间共享数据.如何理解呢?可以看下面这个简单例子,很好理解. (1)先执行下面脚本,创建一

  • JavaScript中var、let、const区别浅析

    下面通过代码给大家介绍JavaScript中var.let.const区别,具体代码如下所述: //1.var定义的变量可以修改,如果不初始化会输出undefined,不会报错. var a; console.log(a); //undefined //2.let是块级作用域,函数内部使用let定义后,对函数外部无影响. let c = 3; console.log(c) function change(){ let c = 6; console.log(c) } change(); (1)只要

  • MySQL去重中distinct和group by的区别浅析

    今天在写业务需要对数据库重复字段进行去重时,因为是去重,首先想到的是distinct关键字.于是一小时过去了....(菜鸟一个,大家轻点骂) 我把问题的过程用sql语句演示给大家演示一下 首先我使用的是mybatis-plus,代码如下 QueryWrapper<ProjectCompany> wrapper = new QueryWrapper<>(); wrapper.select("DISTINCT project_id,company_id,company_nam

  • 解读Java和JavaScript区别与联系

    目录 Java和JavaScript区别与联系 Java 和 JavaScript 不同之处 Java 和 JavaScript 相同之处 javaSE--java和JavaScript比较 总结 Java和JavaScript区别与联系 Java和JavaScript有啥区别,据说还有很多人不知道,来给大家科普一下两者区别! Java 和 JavaScript 不同之处 1. 用处不一样: 它们最本质的不同就是用途:Java目前被广泛应用于PC端.手机端.互联网.数据中心等等: 而JavaSc

  • java &与&&的区别及实例

    java &与&&的区别: & 既是位运算符又是逻辑运算符,&的两侧可以是int,也可以是boolean表达式,当&两侧是int时,要先把运算符两侧的数转化为二进制数再进行运算,而短路与(&&)的两侧要求必须是布尔表达式. 我想很多人在学习java的时候,或者面试时都会遇到 &和&& 然而,如果你没有真正的理解他们的意思,这会给你思路上面带来很大的麻烦 在这篇blog中,当你看完了以后,你会发现,很容易就把他们给区分开

  • 关于Java变量的声明、内存分配及初始化详解

    实例如下: class Person { String name; int age; void talk() { System.out.println("我是: "+name+", 今年: "+age+"岁"); } } public class TestJava2_1 { public static void main(String args[]) { Person p; if (p == null) { p = new Person(); }

随机推荐