Java中数据的声明,各种不同方式的声明和赋值的区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中数据的声明,各种不同方式的声明和赋值的区别?相关的知识,希望对你有一定的参考价值。
String a;
a ="张三" ;
String a ="";
a ="张三";
String a =null;
a ="张三";
String a = "张三";
以上四种的区别
或是int 类型的
int b ;
b =1;
int b=0;
b= 89;
int b = 89;
以上三种的区别。。 均为Java中的声明和赋值的区别?
1 楼的回答不是正确的 。我测试过。。但是答案并不是很知道区别。。忘高手指导
1是定义变量,但没有初始化,就是内存中还没开辟一段存放对象(字符串对象)a;
第3中,初始对象为null空值,再赋值;
而2和4在定义是就初始化了,其中2先初始化为“”空字符串,即使a里放的是指向“”的地址,同理4是指向“张三”的。2在初始化后又重新赋值,也指向“张三”,此时“”对象就不被引用,系统会根据垃圾回收机制确定何时回收该对象内存。并且“张三”是同一个对象,hashcode一样。
对于int等8中基本数据类型,存放的是值不是地址;
3种方式差别不大,它们的复制就是直接改的自己存放的值,只是第一个开始没初始化
注意String是对象,不是基本数据类型 参考技术A String a;//定义一个String引用a
a ="张三" ;//为a引用赋值
String a ="";//定义一个String引用a并初始为""
a ="张三";//为a引用赋值
String a =null;//定义一个String引用并初始为null
a ="张三";//为a赋值
String a = "张三";定义一个String 引用并初始为"张三"
int b ;
b =1;
int b=0;
b= 89;
int b = 89;
跟String一样..定义与赋值..本回答被提问者采纳 参考技术B String a;和String a =null只创建了一个String Object;
String a ="";和String a = "张三";创建了两个
但是它们都有相同的hash code; 参考技术C 基本上都是一样的,只是编程风格的不同而已。
不用关心他们的区别
java中,只声明一个对象不赋值,与声明一个对象并赋为 null 的区别
比如:
public MainGame mMainGame ; 与 public MainGame mMainGame = null;这两句的区别?
编译的时候会不同,未赋值,直接使用编译时会报错。
不赋值就不会分配空间,赋值null会分配0大小的初始空间.
局部变量要赋初始值,全局变量不需要赋初始值;还有int a=null;这句,应该是Integer a=null;
-
如果在类中声明变量可以不赋值,构造对象时会获得默认值
-
如果在方法中声明变量,必须赋初始值
作为成员变量来说 int a;默认值为0 ,然而 int a=null;在java这是不正确的;int 为基本类型;
只有 封装类型 Integer 的默认值 为null 所以 你可以写成int a ;(0) Integer a;(null)
java中对象引用放在栈中,对象的实例放于堆中,如果为null,说明只在栈中。
首先要明白,java里对象传递的时候,传递的都是引用(也就是对象的地址),这比传递整个对象高效的多。而基础类型,int,double等传递的才是值。 比如,(new ArrayList<String>).add(new String("hello")),jvm只是把new String("hello")的地址存入到了列表list里面。String str = new String("Test"),是开辟内存放入了对象,并把它的引用赋给str。 同理,BookInfo bookinfo=null与BookInfo bookinfo=new BookInfo():前者,是声明了一个对象(的引用),jvm并没有开辟内存放入一个对象;而后者,在声明了一个对象的引用后,又把新开辟的没有存储任何有效值的对象的地址赋给了他。
以上是关于Java中数据的声明,各种不同方式的声明和赋值的区别?的主要内容,如果未能解决你的问题,请参考以下文章