❶ 在java中什麼是強制類型轉換!
1 ) 整數 int 轉換成字串 String , 有三種方法 :
String s = String.valueOf(i);
String s = Integer.toString(i);
String s = "" + i;
2 ) String 轉 int
int i = Integer.parseInt([String]);
i = Integer.parseInt([String],[int radix]);
int i = Integer.valueOf(my_str).intValue();
3 ) 布爾類型 轉 String
1. 第一種方法
boolean bool = true;
String s = new Boolean(bool).toString();//將bool利用對象封裝器轉化為對象
2. 第二種方法
boolean bool = true;
String s = String.valueOf( bool );
4 ) String 轉 Date
1 . 導入 java.util.Date date=null;
2 . date=java.sql.Date.valueOf(String s);
5 ) 數字類型間的轉換
轉型有兩種: 向上轉型和向下轉型(強制轉型)
兩種分別如下:
第一種是向上轉型
對於基礎數據類型 , 可以自動轉型 ,比如:
int a = 10;
long b = a;
這里就是把int型轉成了long型 , 因為 long范圍比int大 , 這樣的轉型不會有任何影響 , 所以可以自動轉型
第二種是向下轉型 , 也就是強制
這種需要強轉 , 比如
long a = 10 ;
int b = (int) a;
通過 (int)可以強制轉型 , 但是這樣會丟失精度 , 比如a如果超過了b的范圍 , 那麼強轉成int型, 只會等於int的最大值
又如 : int a = ( int ) 8.8 ;
如果對編程感興趣可以來我這個看看,希望對您有所幫助!~
❷ java對象類型強制轉換問題
HashMap 的key,value是兩個泛型,因此你new出這個對象的話,如果你確定了value值就是一個User對象,你可以把它寫死,就像這樣
Map<String,User> users = new HashMap<String,User>();
這樣編譯器就知道了你value是一個User類型,下次它就不用強制類型轉換了。
你說本身就是個User對象,那隻是你覺得,編譯器是不知道的,所以它就會報錯。
如果你沒指定泛型的具體類型,你可以添加任意Object類型,你可以試一下!!
❸ java中如何進行強制轉換
可以直接通過參數前面加上要轉行的類型的形式實現。
舉例:
int i =97;
char c = (char)i;
System.out.print(c);
輸出結果:a。
備註:並不是所有的類型都可以強制轉換的,所有在開發過程中要遵循對象轉換規則(相關類型才可以轉換)。
❹ java 對象強制轉換的
instanceof是測類型是否一樣的
p是person類型的,student也繼承自person
❺ Java強制類型轉換
原因有如下:
Object數組中可以存儲int ,string, class等類型,對於計算機來說它不清楚用戶最終存儲的是什麼類型的數據,例如可以存儲:
mm[0] = new String("123");
mm[1] = new MyClass();
如果存儲以上數據類型,那麼你強制轉換就是失敗的,Object數組存儲未知類型,所以無法強制轉換某一固定類型的數據,強制轉換就會異常。
針對Object數組中某一個具體數據進行強制轉換時,可以根據存儲的實際類型進行轉換處理,能夠正常進行,所以是正確的。
以上的說明希望你能明白。
❻ JAVA中如何對父類對象強制轉換子類對象的引用
父類對象無法轉化子類對象。
子類對象有父類對象不具備的屬性、初始化需要用到的參數、內存空間。所以父類對象無法轉換為子類對象。
補充:
Java中父類強制轉換成子類的原則:父類型的引用指向的是哪個子類的實例,就能轉換成哪個子類的引用。比如說男孩和女孩都人,但要是人都是男孩就不對的。所以說子類可以轉父類,但父類不能轉子類。
❼ java對象間的強制轉換會發生哪些錯誤或異常
Class類裡面有一個方法cast
public T cast(Object obj)將一個對象強制轉換成此 Class 對象所表示的類或介面。
所以你這里這么寫就是了。。
Class clazz = null;
try {
clazz = Class.forName(className);//這個類名必須是全名 有包的話必須加上
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
clazz.cast(obj);//但是這個的返回值是Object 如果你想使用它裡面的屬性或者方法 只能用反射了
❽ JAVA對象強制轉換
理論上來講是不能這么乾的~
除非
父類引用指向子類對象~
如果非要轉的話那麼肯定會拋
類型轉換錯誤
的異常
❾ Java中的強制類型轉換是如何轉換的
java中數據類型的強制轉換是通過強制轉換語句完成的,強制轉換語句的格式為「目標數據類型 變數 = (目標數據類型) 數據;」。下面給出例子:
1、定義兩個位元組數據類型a、b、c,分別賦予1和2和a+b的值,進行加法運算的式子a+b=3,得出的結果「3」將會被編譯環境判定為整形數據,把這個整形數據賦值給c,系統將會報錯,這樣就需要用到格式為「目標數據類型 變數 = (目標數據類型) 數據;」的強制轉換語句。
2、根據強制轉換語句的格式,易得「byte c = (byte)(a+b);」;
3、這樣就把整形數據的「3」賦值給位元組數據類型的c了,其中完成數據的強制類型轉換。
(9)java對象強制轉換擴展閱讀:
基本類型 轉換原則:
1、類型轉換主要在在賦值、方法調用、算術運算三種情況下發生。
a、賦值和方法調用 轉換規則:從低位類型到高位類型自動轉換;從高位類型到低位類型需要強制類型轉換:
(1)布爾型和其它基本數據類型之間不能相互轉換;
(2)byte型可以轉換為short、int、、long、float和double;
(3)short可轉換為int、long、float和double;
(4)char可轉換為int、long、float和double;
(5)int可轉換為long、float和double;
(6)long可轉換為float和double;
(7)float可轉換為double;
b、算術運算 中的類型轉換:
1、基本就是先轉換為高位數據類型,再參加運算,結果也是最高位的數據類型;
2、byte short char運算會轉換為Int;
(1)如操作數之一為double,則另一個操作數先被轉化為double,再參與算術運算。
(2)如兩操作數均不為double,當操作數之一為float,則另一操作數先被轉換為float,再參與運算。
(3)如兩操作數均不為double或float,當操作數之一為long,、則另一操作數先被轉換為long,再參與算術運算。
(4)如兩操作數均不為double、float或long,則兩操作數先被轉換為int,再參與運算。
特殊:
(1)如採用+=、*=等縮略形式的運算符,系統會自動強制將運算結果轉換為目標變數的類型。
(2) 當運算符為自動遞增運算符(++)或自動遞減運算符(--)時,如果操作數為byte,short或char類型不發生改變;
❿ java中的強制類型轉換
在Java中強制類型轉換分為基本數據類型和引用數據類型兩種,這里我們討論的後者,也就是引用數據類型的強制類型轉換。
在Java中由於繼承和向上轉型,子類可以非常自然地轉換成父類,但是父類轉換成子類則需要強制轉換。因為子類擁有比父類更多的屬性、更強的功能,所以父類轉換為子類需要強制。那麼,是不是只要是父類轉換為子類就會成功呢?其實不然,他們之間的強制類型轉換是有條件的。
當我們用一個類型的構造器構造出一個對象時,這個對象的類型就已經確定的,也就說它的本質是不會再發生變化了。在Java中我們可以通過繼承、向上轉型的關系使用父類類型來引用它,這個時候我們是使用功能較弱的類型引用功能較強的對象,這是可行的。但是將功能較弱的類型強制轉功能較強的對象時,就不一定可以行了。
舉個例子來說明。比如系統中存在Father、Son兩個對象。首先我們先構造一個Son對象,然後用一個Father類型變數引用它:
Father father = new Son();
在這里Son 對象實例被向上轉型為father了,但是請注意這個Son對象實例在內存中的本質還是Son類型的,只不過它的能力臨時被消弱了而已,如果我們想變強怎麼辦?將其對象類型還原!
Son son = (Son)father;
這條語句是可行的,其實father引用仍然是Father類型的,只不過是將它的能力加強了,將其加強後轉交給son引用了,Son對象實例在son的變數的引用下,恢復真身,可以使用全部功能了。
前面提到父類強制轉換成子類並不是總是成功,那麼在什麼情況下它會失效呢?當引用類型的真實身份是父類本身的類型時,強制類型轉換就會產生錯誤。例如:
Father father = new Father();
Son son = (Son) father;
這個系統會拋出ClassCastException異常信息。
所以編譯器在編譯時只會檢查類型之間是否存在繼承關系,有則通過;而在運行時就會檢查它的真實類型,是則通過,否則拋出ClassCastException異常。
所以在繼承中,子類可以自動轉型為父類,但是父類強制轉換為子類時只有當引用類型真正的身份為子類時才會強制轉換成功,否則失敗。
public class TestCastClassException
{
public static void main(String[] args)
{
Father father = new Son();
//這兩句話是不對的,因為一個father類型的引用(指針)是看不見、看不到son中新定義的數據成員或者成員函數的
//雖然這個對象的本質是Son類型的,它也確實有這樣的數據成員和成員函數,但是指針的作用范圍不夠,它看不到。
//代碼後面附上模型分析
//father.son = 2;
//father.show_son();
father.show_father();
father.show();
Father father1 = (Father)father;//一個對象在內存中被new出來後,只能選擇訪問它的方式,不能修改它的布局(包含的成員的個數等)
father1.show();
} //main
}
class Father
{
public int father = 2;
Father(){}
void show()
{
System.out.println("This is father");
}
void show_father()
{
System.out.println("father!!");
}
}
class Son extends Father
{
public int son = 1;
Son(){}
void show()
{
System.out.println("This is son");
}
void show_son()
{
System.out.println("son!!");
}
}