「java赋值讲解」java类赋值

博主:adminadmin 2023-01-28 10:18:09 356

今天给各位分享java赋值讲解的知识,其中也会对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类赋值的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。