「java赋值讲解」java类赋值
今天给各位分享java赋值讲解的知识,其中也会对java类赋值进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java中的赋值运算符怎么用
- 2、java对象赋值
- 3、在java中 变量之间是如何赋值的
- 4、java类怎样赋值
- 5、关于java赋值
- 6、JAVA 给数组赋值
java中的赋值运算符怎么用
// Java中的赋值符号为“=”(不算双引号)
int a;// 定义整型变量a
a=1;// 给a赋值,值为整数1
java对象赋值
java中对象使用等号赋值其实还是同一个对象,当你使用new后才会生成一个新对象。
如过对象已经存在内存中,那么使用等号赋值,也只是使指针指向存在的对象的地址值。
在java中 变量之间是如何赋值的
一、基本类型数据赋值
实验1 :定义一个int 类型变量a = 3,并将a 赋值给int b,然后将a ,赋值为5,那么b 的值是3 还是5 呢?
int a = 3;
int b = a ;
a = 5 ;
System.out.println(" a = " + a+" b = "+b );
运行程序 ,打印结果为 :
a = 5 b =3
我们看到,b并没有随a的改变而改变。基本数据类型是值赋值。
二、String类型数据赋值
实验2:定义一个String类型变量s1 赋值为“a”,并将s1赋值给String s2 ;然后将s1赋值为“b”,那么s2的值是 “a”还是 “b”?
String s1 = "a" ;
String s2 = s1;
s1 = "b" ;
System.out.println("s1 = "+s1+" s2 = "+ s2);
运行程序 ,打印结果为 :
s1 = b s2 =a
我们看到,s2并没有随s1的改变而改变。
三、自定义数据类型赋值
实验3: 创建一个TUser u1 ,并将u1赋值给TUser u2 ,将 u1重新赋值 ,u2会随着u1改变而改变吗 ?
TUser u1 = new TUser();
u1.setId(1);
TUser u2 = u1 ;
u1 = new TUser();
u1.setId(2);
System.out.println("ui :"+u1 + "\t\n" +"u2 : "+ u2);
运行程序,打印结果为:
u1 :TUser(id=2)
u2 : TUser(id=1)
我们看到u2并没有随着u1的改变而改变。
如果我们不改变u1指向的地址,而是改变u1指向地址所对应的数据(即将 u1 = new TUser(); 注释掉)。那么u1,u2 打印的记过将都会是 TUser(id=2)
通过以上三个实验我们发现:
变量之间的赋值,可以说没有所谓的值赋值和地址赋值。
简而言之,将一个变量a赋值给另一个变量b,是将这个变量a的值,拷贝一份给变量b(如果a是引用类型,就拷贝引用,如果是基本类型,就拷贝原始值)
java类怎样赋值
类怎样赋值?类中包括变量,属性和方法,它只会被用来实例化对象后,才会赋值。比如:
public A{
String c;
private void b(){
private String getC(){
return c;
}
private void setC(String c){
this.c=c;
}
}
A a=new A();
a.c="123";
关于java赋值
这个得从Java的空间分配说起,Java将内存空间分为堆和栈。
比如一个语句:
String str1;
此时只会在堆开一个空间,存的是null,将来用来存对象的地址;
str1="Hello World";(等价于str1=new String("Hello World");)
此时会在栈生成对象"Hello World",并将该对象的地址赋给变量str1。
String str2;
str2=str1;
这句话只是把str1的值(为"Hello World"对象的地址)赋给变量str2,即str2也指向了对象"Hello World"。
你在程序里一开始创建了两个对象,这里记成“11”、“22”,n1和n2分别存储他们的地址。
n1=n2,简单赋值操作,相当于把n2存的地址传给了n1,即n1和n2同时指向了“22”,此时对象“11”已经没有任何引用指向它,你在程序中是无法使用它的,它将会被JVM回收(这是Java的垃圾回收机制)。
n1.i=33; 这是对对象“22”进行操作。
其实这里的n1和n2可以理解为C语言里的指针,只是它不允许对内存地址进行加减运算。
还不懂的话可以看这张图片
?关于java赋值.JPG_73dtl0bsht0bs2bsp0cm0clnool2bp0bs0c0bt0c1bu0u12f03z
JAVA 给数组赋值
int[] b;
int[] a ={1,2,3,4};
b=a;
答:可以这样对数组进行赋值。
但是这种方式对数组进行赋值, 实际上是一种浅层复制.
也就是说,b实际上就是a,它们的内存地址值都是一样的, 当a发生改变,那么b也会跟着改变 。
为了真正意义上实现赋值,那么我们应该对数组进行深层复制。
深层复制后,无论a怎么改变,都不会影响到b。
具体代码如下
package core.com;
import java.util.Arrays;
public class DemoCopy {
public static void main(String[] args) {
//---------浅层复制--------
int[] a;
int[] b = {1,2,3,4};
a=b;//浅层复制. 当b改变的时候,a会跟着改变
System.out.println(Arrays.toString(a));//输出数组a,[1,2,3,4]
b[0] = 5;//改变数组b , 数组a也会跟着改变
System.out.println(Arrays.toString(a));//输出数组a,[5,2,3,4]
System.out.println(a==b);//输出true a就是b
//-----------分割线--------
//深层复制方法一:
String[] c ;
String[] d = {"a","b","c"};
c = new String[d.length]; // 需要初始化数组长度
for (int i = 0; i d.length; i++) {//循环复制,
c[i] = d[i];
}
d[0]="y";//改变数组d, 不会影响c
System.out.println(Arrays.toString(c));//
System.out.println(c==d);
//-------------分割线---------
//深层复制方法二:
int[] ary1;
int[] ary2 = {8,8,8};
ary1 = new int[ary2.length];
System.arraycopy(ary2, 0, ary1, 0, ary2.length);//调用函数进行深层复制
ary2[0]=6;//改变数组ary2,并不会影响ary1
System.out.println(Arrays.toString(ary1));
System.out.println(ary1==ary2);
}
}
控制台输出
[1, 2, 3, 4]
[5, 2, 3, 4]
true
[a, b, c]
false
[8, 8, 8]
false
关于java赋值讲解和java类赋值的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。