java对象地址用什么赋值,java 在引用类型赋值的时候怎么能不给地址直接赋值呢
大家好,今天来为大家解答java对象地址用什么赋值这个问题的一些问题点,包括java 在引用类型赋值的时候怎么能不给地址直接赋值呢也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
java 在引用类型赋值的时候怎么能不给地址直接赋值呢
Java中的引用类型类似于指针,基本类型可以直接赋值,而引用类型是将引用指向一块内存。比如:
Personp=newPerson();
我们都知道在Java中new的东西会在内存中开辟一块内存,左边是指向这块内存的引用。我理解中你说的直接赋值应该是类似于:
inti=1;
doubleb=2;
booleana=false;
这种是因为他们是基本类型,不算是一个对象。曾经在一本书上看到过,如果Java直接舍弃这些基本类型,可能会是一门更加纯粹的OOP语言。
java中可以将某个引用变量的值赋值给另外一个引用变量,
首先生成对象的时候对象的内容被存储在内存中的,存储的位置会有段内存地址
而当 A a= new A();的时候可以如下理解
new A()在内存中保存该对象并返回存储位置的地址, A a= new A();执行的时候呢a的值
可以理解为a=内存地址这样
那么在引用传递的时候比如 A b= a的时候,相当于 b= a的内存地址
所以无论对a还是b进行修改的话,实际上都是修改内存中由new A()生成的对象
而 a和 b其实都是对 new A()生成的对象的引用
对象的复制是指内存中实际存储两个对象,只不过第二个对象的所有之都与第一个对象相同,
相当于 A b= new A(),让后再把a中的内容全部复制到b中,
这个时候修改 a的时候 b的内容不会改变
JAVA的对象数组赋值,纠结了。。。
楼上正解,我在这里给你另外一种赋值方式,供你参考。首先classDVD1中的代码生成get和set方法。然后通过实例化对象,去赋值,代码如下
publicstaticvoidmain(String[]args){
DVD1[]manager=newDVD1[6];
//实例化一个对象
DVD1dvd1=newDVD1();
dvd1.setName("罗马假日");
dvd1.setDate("1日");
dvd1.setState("可借");
dvd1.setTimes(10);
manager[0]=dvd1;//给数据对象赋值
//实例化一个对象
DVD1dvd2=newDVD1();
dvd2.setName("java编程");
dvd2.setDate("null");
dvd2.setState("可借");
dvd2.setTimes(11);
manager[1]=dvd2;//给数据对象赋值
//实例化一个对象
DVD1dvd3=newDVD1();
dvd3.setName("面向对象");
dvd3.setDate("null");
dvd3.setState("可借");
dvd3.setTimes(1);
manager[2]=dvd3;//给数据对象赋值
}
classDVD1{
Stringname;
Stringstate;
Stringdate;
inttimes;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetState(){
returnstate;
}
publicvoidsetState(Stringstate){
this.state=state;
}
publicStringgetDate(){
returndate;
}
publicvoidsetDate(Stringdate){
this.date=date;
}
publicintgetTimes(){
returntimes;
}
publicvoidsetTimes(inttimes){
this.times=times;
}
}
java如何从键盘为amount赋值
Java中如何用键盘输入的方式给各个数组元素赋值
回答于2022-10-06
本文目录
Java中如何用键盘输入的方式给各个数组元素赋值
java中如何给int数组赋值赋一个空值
java怎样给数组赋值
java中数组赋值的方法是什么
Java中怎么给数组批量赋值
java给数组赋值
在java中定义一个数组对象怎么赋值
java数组赋值(急!!!)
java数组赋值
JAVA给数组赋值
Java中如何用键盘输入的方式给各个数组元素赋值
步骤如下:
1、打开Eclipse,新建项目,在项目src目录新建一个类。
2、引用数组的元素,语法格式如下。
3、索引从0开始,下标值可以是变量,也可以是常数。
4、数组初始化分为动态初始化和静态初始化。
5、数组动态初始化,指为已经创建好的数组元素进行赋值。
6、数组静态初始化,指在声明数组并创建数组的同时对每个元素进行赋值,一次性初始化所有元素。
7、声明并创建字符型类型数组c,进行赋值。
java中如何给int数组赋值赋一个空值
在Java的赋值语句中不能够给整形的数组赋值成一个空值,Java会给int一维数组赋值为0,但是要想实现空值的类型那么将int数组转换为Integer数组,Integer可以为空,但int不能为空。
数组是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。
数组是在程序设计中,为了处理方便,把具有相同类型的若干元素按有序的形式组织起来的一种形式。
扩展资料:
Java的语言特点:
Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。
例如,Java不支持go to语句,代之以提供break和continue语句以及异常处理。
Java还剔除了C++的操作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。
Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。
技术应用:
1、Android应用、在金融业应用的服务器程序、、网站、嵌入式领域、、大数据技术、高频交易的空间。
数组的特点:
1、数组是相同数据类型的元素的集合。
2、数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。
参考资料来源:百度百科-Java
参考资料来源:百度百科-数组
java怎样给数组赋值
Object array= new Object[ int size ];/Object array= new Object[ int size ];size是数组大小
eg: String str= new String[ 10 ];
str[ 0 ]=“1“; str[ 1 ]=“1“;
Object array={obj1,obj2,==};/Object array={obj1,obj2,==};
Object array= new Object{obj1,obj2,==};/Object array= new Object{obj1,obj2,==};
遍历:
for(int i= 0;i《 array.length;i++){
System.out.println( array[ i ]);
}
或者
for(Object obj: array){
System.out.println( obj);
}
java中数组赋值的方法是什么
public class TempArray{
public static void main(String args){
//声明数值型数组
int array={1, 2};
int array2= new int;
//新增一个数组长度
array= Arrays.copyOf(array, array.length+1);
//将3这个数值赋值个数组索引 2的位置,也就是最后面追加
array[array.length-1]= 3;
System.out.println(array2.length);//Result: 4
上面用的是数组,你也可以用 ArrayList数组列表,是List的一个实现。
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。
Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
Java由四方面组成:
1.Java编程语言,即语法。
2.Java文件格式,即各种文件夹、文件的后缀。
3.Java虚拟机(JVM),即处理*.class文件的解释器。
4.Java应用程序接口(Java API)。
Java中怎么给数组批量赋值
int a={1,2,3};
这句话我估计,大部分人都还没完全理解它的含义
首先,{1,2,3}这样的表达式,它一出现,就在内存中以一个整型数组出现了
类似“字符串“一样,以双引号出现,系统默认的就把它当成一个java.lang.String的实例。
所以当系统自动建立数组对象之后,才将引用传给数组对象引用 a
后面你使用a={1,2,3,4,5}直接这样是不行的。(注意和String a=“aaa“;的区别)
因为a的含义容易出现歧义,所以JAVA的机制不支持这种赋值,
但是另一种是可行的,a=new int{1,2,3,4,5,6};
不信你可以运行我下面的代码
public class Test{
/**
*@param args
*/
public static void main(String args)
{
// TODO Auto-generated method stub
int a={1,2,3};
for(int i=0;i《a.length;i++) System.out.println(a[i]);
a=new int{1,2,3,4,5,6};
for(int i=0;i《a.length;i++) System.out.println(a[i]);
}
}
java给数组赋值
当用一个数组名直接给另一个数组赋值时,是相当于赋了一个引用,此时,这两个变量是指向同一个对象,也就是说指向同一块内存空间,当你修改其中一个变量的值时,其他那个变量的值也随着改变了。
int a=new int;
int b=a;
for(int i=0;i《10;i++){
b[i]=i;
}
此时a和b指向同一个内存空间,所以当打印a,b数组时,他们的结果应该是一样的,尽管没有对a数组进行初始化。当然,数组a和数组b的类型必须是一致的才行啊!
在java中定义一个数组对象怎么赋值
1、定义一个数组对象
String arr= new String;//定义一个字符串数组变量arr,数组是一维数组,长度是2
2、通过数组索引给数组赋值
arr=“a“;//给数组第一个赋值字符串a
arr=“b“;//给数组第二个赋值字符串b
java数组赋值(急!!!)
楼上的说法“首先java只可以在class中【声明】成员变量,而不能对变量赋值,”这个是错误的,实际上
可以在定义的时候进行初始化赋值,例如int anArray=new int;但是不可以单独执行赋值语句,例如:int anArray; anArray=new int;看起来这两句没什么差别,但是差别还是很明显的,第一种情况那是定义一个数组变量,同时赋初始值,变量的定义与赋值同时进行,第二种情况是先定义了一个变量,然后再给它赋值,这里是先定义后赋值。之所以第二种情况会报错,是因为java的类定义里面,只能有变量定义、方法定义,不能够单独执行语句体。你要执行语句的话,就必须把要执行的语句放到方法里面去执行例如你在main方法里面那么赋值就不会出问题。不光是赋值语句,其他任何算术运算语句,方法调用语句都不能在类的定义体里面运行的,你不信可以试试。
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= 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=“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=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给数组赋值
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= 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=“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=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 在引用类型赋值的时候怎么能不给地址直接赋值呢、java对象地址用什么赋值的信息别忘了在本站进行查找哦。