java reference是什么,在Java中什么是 Primitive 和 Reference 类型
大家好,今天来为大家分享java reference是什么的一些知识点,和在Java中什么是 Primitive 和 Reference 类型的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
Java里什么是引用类型
最简答来说除了8中基本类型以外剩下的都是引用类型
Java提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。
原始类型封装类
boolean-->Boolean
char--->Character
byte-->Byte
short-->Short
int-->Integer
long-->Long
float-->Float
double-->Double
引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。同时为了面向对象操作的一致性,这些基本类型都有相应的封装类型:Integer、Short、Long、Byte、Float、Double、Character等。
因为封装类型是对象,所以可以进行相应的很多对象能力函数操作,这样就可以提供很多基本类型难以完成的工作的完成和实现。
你可以通过以下方式来声明该类型。
int a,a为int类型的变量
char a,a为char类型的
String对象
1.首先String不属于8种基本数据类型,String是一个对象。
因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。
2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null;
3. String str=”punkll”;
String str=new String(“punkll”);的区别:
在这里,我们不谈堆,也不谈栈,只先简单引入常量池这个简单的概念。
常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。
看例1:
String s0=”punkll”;
String s1=”punkll”;
String s2=”punk”+“ll”;
System.out.println( s0==s1);
System.out.println( s0==s2);
结果为:
true
true
首先,我们要知结果为道Java会确保一个字符串常量只有一个拷贝。
因为例子中的s0和s1中的”punkll”都是字符串常量,它们在编译期就被确定了,所以s0==s1为true;而”punk”和”ll”也都是字符串常量,当一个字符串由多个字符串常量连接而成时,它自己肯定也是字符串常量,所以s2也同样在编译期就被解析为一个字符串常量,所以s2也是常量池中”punkll”的一个引用。
所以我们得出s0==s1==s2;
用new String()创建的字符串不是常量,不能在编译期就确定,所以new String()创建的字符串不放入常量池中,它们有自己的地址空间。
看例2:
String s0=”punkll”;
String s1=new String(”punkll”);
String s2=”punk”+ new String(“ll”);
System.out.println( s0==s1);
System.out.println( s0==s2);
System.out.println( s1==s2);
结果为:
false
false
false
例2中s0还是常量池中”punkll”的应用,s1因为无法在编译期确定,所以是运行时创建的新对象”punkll”的引用,s2因为有后半部分new String(“ll”)所以也无法在编译期确定,所以也是一个新创建对象”punkll”的应用;明白了这些也就知道为何得出此结果了。
java 中的 "this" reference 是干什么的呢 为什么要用它呢
根据你这条语句如果只是单独出来一个赋值语句那就没什么用this的必要,this准确点说应该是指向自身的一个引用
class A(){
private int a;
}
A(int a){
this.a=a
}
看到了吧!你构造了一个方法,但是参数名都是a!赋值的时候会造成混淆,这个时候用this.a=a就避免了这个问题,表示把a赋值给当前对象的成员变量a!
在Java中什么是 Primitive 和 Reference 类型
Java的数据类型分为两类:primitive和reference类型
Java虽然是个面向对象的语言,也声称“Everything is object”-一切都是对象。但是,我觉得还不够纯粹和彻底,和ruby或者python比较一下就知道了。在Java中,数字和布尔类型就不被看做对象,而是被称为primitive类型。不过也不见的就不好,本文也不是想对此评论和分析。本文是想阐述Java的数据类型。
Java的数据类型
Java的数据类型分为两类:primitive和reference类型。我们可以从hold数据这个角度来说。primitive类型可以hold数字和布尔数据;reference类型可以hold对象,接口和数组类型的数据的指针。可以想象后一种数据比较复杂,往往是一段数据,不像primitive的数据是比较单纯的数据单元,比如int,float和boolean。
java中传参数是by value还是by reference
值
int
doulbe这些
是直接数值赋值过去了Object这些传的是这些对象的内存地址[也是值]
传过去的内存地址和传入的一样的此时指向的是同一个对象。而传入的int
这些
在函数内被改变了是不影响
传入函数的
object这些因为传入的是内存地址
函数内卫都是对同一个对象修改
所以在方法中传入修改的object会影响到方法外的object
OK,关于java reference是什么和在Java中什么是 Primitive 和 Reference 类型的内容到此结束了,希望对大家有所帮助。