『壹』 初學java,為什麼說Integer是引用數據類型
int是JAVA八大基本數據類型(byte,shor,int,long,char,boolean,float,double)之一。JAVA語言為八大基本數據提供了包裝類,Integer對應是int類型的包裝類,就是把int類型包裝成Object對象。Java有2種不同的類型:引用類型和原始類型。Int是java的原始數據類型,Integer是java的為int提供的封裝類。Java為每個原始類型提供了封裝類。int是基本數據類型Integer是int的一個包裝類(wrapper),他是類不是基本數據類型,他的內部其實包含一個int型的數據那為什麼要用Integer呢,主要是因為面向對象的思想,因為Java語言是面向對象的,這也是它只所以流行的原因之一,對象封裝有很多好處,可以把屬性也就是數據跟處理這些數據的方法結合在一起,比如Integer就有parseInt()等方法來專門處理int型相關的數據,另一個非常重要的原因就是在Java中絕大部分方法或類都是用來處理類類型對象的,如ArrayList集合類就只能以類作為他的存儲對象,而這時如果想把一個int型的數據存入list是不可能的,必須把它包裝成類,也就是Integer才能被List所接受。所以Integer的存在是很必要的。始數據類型引用數據類型oatdoubleDouble引用類型和原始類型的行為完全不同,並且它們具有不同的語義。引用類型和原始類型具有不同的特徵和用法,它們包括:大小和速度問題,這種類型以那種類型的數據結構存儲,當引用類型和原始類型用作某個類的實例時所指定的預設值。對象引用實例變數的預設值為null,而原始類型實例變數的預設值與它們的類型有關。Integer類的使用方法1、屬性。staticintMAX_VALUE:返回最大的整型數;staticintMIN_VALUE:返回最小的整型數;staticClassTYPE:返回當前類型。例子代碼:System.out.println("Integer.MAX_VALUE:"+Integer.MAX_VALUE);結果為:Integer.MAX_VALUE:21474836472、構造函數。Integer(intvalue):通過一個int的類型構造對象;Integer(Strings):通過一個String的類型構造對象;例子代碼:Integeri=newInteger("1234");生成了一個值為1234的Integer對象。3、方法。說明:1.所有方法均為public;2.書寫格式:[修飾符]如:staticintparseInt(Strings)表示:此方法(parseInt)為類方法(static),返回類型為(int),方法所需參數為String類型。1.byteValue():取得用byte類型表示的整數;2.intcompareTo(IntegeranotherInteger):比較兩個整數。相等時返回0;小於時返回負數;大於時返回正數。例子代碼:Integeri=newInteger(1234);System.out.println("i.compareTo:"+i.compareTo(newInteger(123)));結果為:i.compareTo:13.intcompareTo(Objecto):將該整數與其他類進行比較。如果o也為Integer類,進行方法2的操作;否則,拋出ClassCastException異常。4.staticIntegerdecode(Stringnm):將字元串轉換為整數。5.doubledoubleValue():取得該整數的雙精度表示。6.booleanequals(Objectobj):比較兩個對象。7.floatfloatValue():取得該整數的浮點數表示。8.staticIntegergetInteger(Stringnm):根據指定名確定系統特徵值。9.staticIntegergetInteger(Stringnm,intval):上面的重載。10.staticIntegergetInteger(Stringnm,Integerval):上面的重載。11.inthashCode():返回該整數類型的哈希表碼。12.intintValue():返回該整型數所表示的整數。13.longlongValue():返回該整型數所表示的長整數。14.staticintparseInt(Strings):將字元串轉換成整數。s必須是時進制數組成,否則拋出NumberFormatException異常。15.staticintparseInt(Strings,intradix):以radix為基數radix返回s的十進制數。所謂的基數就是「幾進制」。例子代碼:Strings1=newString("1010");System.out.println("Integer.parseInt(Strings,intradix):"+Integer.parseInt(s1,2));結果為:Integer.parseInt(Strings,intradix):10即s1在此例中被看成是二進制,返回十進制就是10。16.shortshortValue():返回該整型數所表示的短整數。17.staticStringtoBinaryString(inti):將整數轉為二進制數的字元串。18.staticStringtoHexString(inti):將整數轉為十六進制數的字元串。19.staticStringtoOctalString(inti):將整數轉為八進制數的字元串。20.StringtoString():將該整數類型轉換為字元串。21.staticStringtoString(inti):將該整數類型轉換為字元串。不同的是,此為類方法。22.staticStringtoString(inti,intradix):將整數i以基數radix的形式轉換成字元串。例子代碼:inti1=54321;System.out.println("Integer.toString(inti,intradix):"+Integer.toString(i1,16));結果為:Integer.toString(inti,intradix):d43123.staticIntegervalueOf(Strings):將字元串轉換成整數類型。24.staticIntegervalueOf(Strings,intradix):將字元串以基數radix的要求轉換成整數類型。
『貳』 java無法取消引用int怎麼改呀
你不能直接用一個int型的untilNum直接調用那兩個方法啊!只有用類的引用才能調用方法!
可以像他們說的那樣改:
new PatternMethod().printPattern1(n);
new PatternMethod().printPattern2(n);
『叄』 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的基本類型和引用類型 int與Integer
int
是基本數據類型
integer是個泛型,它是一個封裝類,裡面封裝的就是int這種基本數據類型。目地就是為了可以把這個創建它的對象。
通俗點說:int就是一個茅坑,但現在它是露天的,那試問誰敢再它的上面運行拉屎這種方法。而integer就是給在這個茅坑上起了個房子,把這個茅坑封裝起來變成了廁所,這樣你才能在裡面拉屎。
『伍』 java 中int ,double的不同int能否操作小數呢咋么操作
類型不同,不能操作小數。
『陸』 java中值類型和引用類型的區別
(1)值類型:數據存儲在內存的堆棧中,從堆棧中可以快速地訪問這些數據,因此,值類型表示實際的數據。
(2)引用類型:對象、數組、函數。
1、值類型:包括:sbyte、short、int、long、float、double、decimal(以上值類型有符號)byte、ushort、uint、ulong(以上值類型無符號)bool、char
2、引用類型:包括:對象類型、動態類型、字元串類型。二、具體區別:
1、值類型:byteb1=1;byteb2=b1;Console.WriteLine("{0},{1}。",b1,b2);b2=
2;Console.WriteLine("{0},{1}。",b1,b2);Console.ReadKey();解釋:byteb1=1;聲明b1時,在棧內開辟一個內存空間保存b1的值1。byteb2=b1;聲明b2時,在棧內開辟一個內存空間保存b1賦給b2的值1。Console.WriteLine("{0},{1}。",b1,b2);輸出結果為1,1。b2=2;將b2在棧中保存的值1改為
2。Console.WriteLine("{0},{1}。",b1,b2);輸出結果為1,2。
2、引用類型:復制代碼。
『柒』 java中int是什麼類型
int是一種數據類型,表示整數類型。在計算機編程語言(C、C++、C#、Java等)中,是用於定義整數類型變數的標識符。在一般的電腦中,int佔用4位元組,32比特。除了int類型之外,還有short、long、long long類型可以表示整數。
『捌』 java在函數調用時怎麼「傳int的引用」
[java] view plain
public class TestFun {
public static void testInt(int i){
i=5;
}
public static void main(String[] args) {
int a=0 ;
TestFun.testInt(a);
System.out.println("a="+a);
}
}
程序執行結果:a=0 。
(二)對象類型參數:傳引用,方法體內改變形參引用,不會改變實參的引用,但有可能改變實參對象的屬性值。
舉兩個例子:
(1)方法體內改變形參引用,但不會改變實參引用 ,實參值不變。
[java] view plain
public class TestFun2 {
public static void testStr(String str){
str="hello";//型參指向字元串 「hello」
}
public static void main(String[] args) {
String s="1" ;
TestFun2.testStr(s);
System.out.println("s="+s); //實參s引用沒變,值也不變
}
}
執行結果列印:s=1
(2)方法體內,通過引用改變了實際參數對象的內容,注意是「內容」,引用還是不變的。
[java] view plain
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Test {
public void a(Map a,String b)
{
a.put("test", b);
}
public void b()
{
Map a = new HashMap();
a.put("test", "a");
String b = "b";
//printMap(a);
a(a,b);
printMap(a);
}
public void printMap(Map a)
{
Set set = a.entrySet();
Iterator it = set.iterator();
while(it.hasNext())
{
Map.Entry e = (Map.Entry)it.next();
System.out.println("Key:"+e.getKey()+" Value:"+e.getValue());
}
}
public static void main(String avgs[])
{
Test t = new Test();
t.b();
}
}
執行結果,列印:Key:test Value:b 。可見在方法a()內改變了實參的內容。
(3)第二個例子是拿map舉例的,還有經常涉及的是 StringBuffer :
[java] view plain
public class TestFun4 {
public static void testStringBuffer(StringBuffer sb){
sb.append("java");//改變了實參的內容
}
public static void main(String[] args) {
StringBuffer sb= new StringBuffer("my ");
new TestFun4().testStringBuffer(sb);
System.out.println("sb="+sb.toString());//內容變化了
}
}
執行結果,列印:sb=my java 。
所以比較參數是String和StringBuffer 的兩個例子就會理解什麼是「改變實參對象內容」了。
總結:
第一:java方法基本數據類型是傳值,對象類型傳引用,這是千真萬確的。
第二:當參數是對象時,無論方法體內進行了何種操作,都不會改變實參對象的引用。
第三:當參數是對象時,只有在方法內部改變了對象的內容時,才會改變實參對象內容。
『玖』 java中的引用數據類型是怎樣的
java中有兩種數據類型:基本類型和引用類型。
基本類型有8個:
整數類型 byte、short、int、long
浮點數類型 float、double
字元型 char
布爾類型 boolean
引用類型包括三種:
類 Class
介面 Interface
數組 Array
基本類型是通過諸如 int a = 5; long b = 6L;的形式來定義的,稱為自動變數,自動變數存放的是字面值,不是類的實例,它存放在內存的堆棧中,數據大小和生存期必須是確定的,存取速度比較快,在堆棧中的字面值可以共享,也就是說我們定義一個int a = 5;然後又定義了一個int b = 5;這時a與b在內存中指向的是同一個字面常量。
引用類型一般是通過new關鍵字來創建,比如Integer num = new Integer(3);它存放在內存的堆中,可以在運行時動態的分配內存大小,生存期也不必事先告訴編譯器,當引用類型變數不被使用時,Java內部的垃圾回收器GC會自動回收走。引用變數中存放的不是變數的內容,而是存放變數內容的地址。
在參數傳遞時,基本類型都是傳值,也就是傳遞的都是原變數的值得拷貝,改變這個值不會改變原變數,而引用類型傳遞的是地址,也就是參數與原變數指向的是同一個地址,所以如果改變參數的值,原變數的值也會改變。這點要注意。
在java中,8種基本類型在java中都有對應的封裝類型,也就是引用類型:
整數類型 Byte、Short、Integer、Long
浮點數類型 Float、Double
字元型 Character
布爾類型 Boolean
有時候我們會看到這樣的語句 Integer num = 3;Boolean b = true;這樣定義也能行得通,其實這裡面有一個自動裝箱的問題,即java自動把3這個字面常量封裝成了Integer對象,同理也有自動拆箱。
還有些需要注意的比較特殊的地方:
1.Integer類型
Integer i1 = 3;
Integer i2 = 3;
此時i1 == i2 返回的是true
Integer i1 = 128;
Integer i2 = 128;
此時i1 == i2返回的是false,
這時因為Integer的數值在-128~127之間時,即在int的范圍內,默認是按照基本類型int來存放的,仍舊存在堆棧中,如果超出了int的范圍,就按照對象的方式來存放和比較了。
2、String類型
String類型我們有時候也會直接這樣定義:
String s = "abc";
這里的"abc"稱為字元串常量,也是存在堆棧中的,s中存放的就是指向這個堆棧地址的引用,如果再定義一個
String s1 = "abc";
這時,s與s1存放的是同一個地址的引用,即s與s1指向的是同一個字元串常量,
s == s1的值是true,
但是如果有
String s2 = new String("abc");
這時s == s2則為false,因為使用new之後,每次生成的對象都不是同一個,即使存儲的內容相同。
上面的s == s1,s == s2其實比較的都是地址,並不是裡面的內容。如果要比較內容,可以使用equals()方法。
其他的就不多說了,打起來太慢了,可以自己去看一下java編程思想。