當前位置:首頁 » 操作系統 » object源碼

object源碼

發布時間: 2022-04-25 11:17:19

A. java中我想查看objict源碼,用按住"ctrl"點object這個方法。可是看不到。請問該怎麼設置

方法/步驟

  • 打開eclipse,新建一個測試類testObject

B. c語言:由object文件(.o)或.exe文件怎麼得到.c源文件

直接是無法得到的。即使你使用反匯編,也是不可以的啊!object文件已經是二進制,即使你反匯編,也只能得到匯編代碼。是無法原模原樣地得到c源程序的(否則的話,微軟的操作系統不就早被人反匯編出來了?)。
建議你根據思路重新寫吧。多練練,不要記程序是怎麼寫的(這是中國教育的詬病,只知道死記硬背,卻不理解),而是要做到心中有解,當你下定決心要重寫的時候,那麼你會發現你寫的代碼會比上一次更優秀!

C. 2020-09-10:java里Object類有哪些方法

Java Object類是所有類的父類,主要方法有:

  1. getClass():獲取運行時類型,返回值為Class對象

2.hashCode():返回該對象的哈希碼值,是為了提高哈希表的性能(HashTable)

3.equals():判斷兩個對象是否相等,在Object源碼中equals就是使用==去判斷,所以在Object中equals是等價於==的,但是在String及某些類對equals進行了重寫,實現不同的比較。

4.clone():JAVA里除了8種基本類型傳參數是值傳遞,其他的類對象傳參數都是引用傳遞,我們有時候不希望在方法里講參數改變,這是就需要在類中復寫clone方法。此方法只實現了一個淺層拷貝,對於基本類型欄位成功拷貝,對嵌套對象,只把地址拷貝了,需要自己重寫clone方法進行深度拷貝。

5.toString():返回一個String字元串,用於描述當前對象的信息,可以重寫返回對自己有用的信息,默認返回的是當前對象的類名+hashCode的16進制數字。

6.wait():多線程時用到的方法,作用是讓當前線程進入等待狀態,同時也會讓當前線程釋放它所持有的鎖。直到其他線程調用此對象的 notify() 方法或 notifyAll() 方法,當前線程被喚醒

7.notify():多線程時用到的方法,喚醒該對象等待的某個線程

8.notifyAll():多線程時用到的方法,喚醒該對象等待的所有線程

9.finalize():對象在被GC釋放之前調用finalize方法。

你明白了嗎?

D. 為什麼object可以轉為string

在java項目的實際開發和應用中,常常需要用到將對象轉為String這一基本功能。本文將對常用的轉換方法進行一個總結。常用的方法有Object.toString(),(String)要轉換的對象,String.valueOf(Object)等。下面對這些方法一一進行分析。

方法1:採用 Object.toString()方法

請看下面的例子:

Object object = getObject();

System.out.println(object.toString());
注1

在這種使用方法中,因為java.lang.Object類里已有public方法.toString(),所以對任何嚴格意義上的java對象都可以調用此方法。但在使用時要注意,必須保證object不是null值,否則將拋出NullPointerException異常。採用這種方法時,通常派生類會覆蓋Object里的toString()方法。

方法2:採用類型轉換(String)object方法

這是標準的類型轉換,將object轉成String類型的值。使用這種方法時,需要注意的是類型必須能轉成String類型。因此最好用instanceof做個類型檢查,以判斷是否可以轉換。否則容易拋出CalssCastException異常。此外,需特別小心的是因定義為Object
類型的對象在轉成String時語法檢查並不會報錯,這將可能導致潛在的錯誤存在。這時要格外小心。如:

Object obj = new Integer(100);

String strVal = (String)obj;

在運行時將會出錯,因為將Integer類型強制轉換為String類型,無法通過。但是,

Integer obj = new Integer(100);

String strVal = (String)obj;

如上格式代碼,將會報語法錯誤。

此外,因null值可以強制轉換為任何java類類型,(String)null也是合法的。

方法3:採用String.valueOf(Object)

String.valueOf(Object)的基礎是Object.toString()。但它與Objec.toString()又有所不同。在前面方法1的分析中提到,使用後者時需保證不為null。但採用第三種方法時,將不用擔心object是否為null值這一問題。為了便於說明問題,我們來分析一下相關的源代碼。Jdk里String.
valueOf(Object)源碼如下:

/**

* Returns the string representation of the Object argument.

*

* @param obj an Object.

* @return if the argument is null, then a string equal to

* "null"; otherwise, the value of

* obj.toString() is returned.

* @see java.lang.Object#toString()

*/

public static String valueOf(Object obj) {

return (obj == null) ? "null" : obj.toString();

}

從上面的源碼可以很清晰的看出null值不用擔心的理由。但是,這也恰恰給了我們隱患。我們應當注意到,當object為null時,String.valueOf(object)的值是字元串」null」,而不是

null!!!在使用過程中切記要注意。試想一下,如果我們用 if(String.valueOf(object)==null){System.out.println(「傳入的值是null!」);}這樣的語句將可能會發生什麼問題。再想一下,向控制台輸出時,在視覺上如下語句在執行的結果上有什麼不同:

System.out.println(String.valueOf((Object)null));
注2

System.out.println(null);

我們看到的輸出將是一模一樣的東西:null,但它們意義相同嗎?

注1:光就System.out.println的使用來說,語句System.out.println(object.toString());
換為System.out.println(object);
更好。此處如是用法主要是為了說明Object#toString()的用法。

注2:推薦使用System.out.println(String.valueOf((Object)null));
不推薦使用System.out.println(String.valueOf(null));在使用重載方法時,這樣做是一個好的習慣。

以上是對object對象轉換為String的一些總結。

new Integer.valueof()返回的是Integer的對象。
Integer.parseInt() 返回的是一個int的值。

new Integer.valueof().intValue();返回的也是一個int的值。

Integer.valueof(String s)是將一個包裝類是將一個實際值為數字的變數先轉成string型再將它轉成Integer型的包裝類對象(相當於轉成了int的對象)這樣轉完的對象就具有方法和屬性了。
而Integer.parseInt(String s)只是將是數字的字元串轉成數字,注意他返回的是int型變數不具備方法和屬性。

1
字元串轉換成數據
字元串轉換成整數:
String MyNumber ="1234";
int MyInt = Integer.parseInt(MyNumber);
字元串轉換成byte, short, int, float, double, long等數據類型,可以分別參考Byte, Short, Integer, Float, Double,
Long類的parseXXX方法。

2
數據轉換成字元串
整數轉換成字元串:
int MyInt = 1234;
String MyString = "" + MyInt;
其它數據類型可以利用同樣的方法轉換成字元串。

3
十進制到其他進制的轉換
十進制整數轉換成二進制整數,返回結果是一個字元串:
Integer.toBinaryString(int i);
Integer和Long提供了toBinaryString, toHexString和toOctalString方法,可以方便的將數據轉換成二進制、十六進制和八進制字元串。功能更加強大的是其toString(int/long
i, int radix)方法,可以將一個十進制數轉換成任意進制的字元串形式。
byte, short, float和double等數據類型,可以利用Integer或者是Long的toBinaryString,
toHexString, to OctalString和toString方法轉換成其他進制的字元串形式。

4
其它進制到十進制的轉換
五進制字元串14414轉換成十進制整數,結果是1234:
System.out.println(Integer.valueOf("14414", 5);
Integer和Long提供的valueOf(String source, int radix)方法,可以將任意進制的字元串轉換成十進制數據。

5 整數到位元組數組的轉換
public static byte[] toByteArray(int number)
{
int temp = number;
byte[] b=new byte[4];
for (int i = b.length - 1; i > -1; i--)
{
b[i] = new Integer(temp & 0xff).byteValue();
temp = temp >> 8;
}
return b;
}

6 位元組數組到整數的轉換
public static int toInteger(byte[] b)
{
int s = 0;
for (int i = 0; i < 3; i++)
{
if (b[i] > 0)
s = s + b[i];
else
s = s + 256 + b[i];
s = s * 256;
}
if (b[3] > 0)
s = s + b[3];
else
s = s + 256 + b[3];
return s;
}

7 短整數與位元組數組之間的相互轉換
short與int之間的區別在於short是兩個位元組的,而int是四個位元組的。因此,只需要將5
與6 中的范常式序小做改動,即可實現短整數與位元組數組之間的相互轉換。

8
位元組數組轉換成雙精度浮點數
public double toDouble(byte[] b)
{
long l = 0;
Double D = new Double(0.0);
l = b[0];
l |= ((long)b[1]<<8);
l |= ((long)b[2]<<16);
l |= ((long)b[3]<<24);
l |= ((long)b[4]<<32);
l |= ((long)b[5]<<40);

l |= ((long)b[6]<<48);
l |= ((long)b[7]<<56);
return D.longBitsToDouble(l);
}

9 布爾類型轉換成字元串
第一種方法是:

boolean bool = true;
String s = new Boolean(bool).toString();//將bool利用對象封裝器轉化為對象
s.equals("true");
/* 其中,toString方法是一個繼承方法。java中所有的類都是object的繼承,object的一個重要方法就是toString,用於將對象轉化為字元串。*/

第二種方法是:

boolean bool = true;
String s = String.valueOf( bool );

首先,從代碼長度上講第二種方法明顯要比第一種方法簡潔;其次,第一種方法在轉化過程中多引入了一個完全沒有必要的對象,因此,相對第二種方法來說這就造成了內存空間的浪費,大大減慢了運行速度。所以,推薦使用第二種方法。

10 數字類型與數字類對象之間的轉換
byte b = 169;
Byte bo = new Byte( b );
b = bo.byteValue();

short t = 169;
Short to = new Short( t );
t = to.shortValue();

int i = 169;
Integer io = new Integer( i );
i = io.intValue();

long l = 169;
Long lo = new Long( l );
l = lo.longValue();

float f = 169f;
Float fo = new Float( f );
f = fo.floatValue();

double d = 169f;
Double dObj = new Double( d );
d = dObj.doubleValue();

5.0 String 轉 Integer
Integer in=new Integer(String s);

Integer in=new Integer(Integer.parseInt(String s));

5.1 String 轉 int

1). int i = Integer.parseInt([String]);

i = Integer.parseInt([String],[int radix]);

2). int i = Integer.valueOf(my_str).intValue();

5.2 如何將整數 int
轉換成字串 String ?

A. 有叄種方法:

1.) String s = String.valueOf(i);

2.) String s = Integer.toString(i);

3.) String s = "" + i;

注: Double, Float, Long
轉成字串的方法大同小異.

5.3 String
轉 Date
導入 java.util.Date date=null;
date=java.sql.Date.valueOf(String s);

E. (Java泛型)為什麼Object不能直接引用Integer內的值 (後面有源代碼)

java的泛型實現機制就是這一要求的。泛型參數必須是一個類,即object類的子類。
但是java中,int屬於原始數據類型,並不是一個類,也就無法使用於java泛型。
所以只能用integer類。

F. python object源碼怎麼看

Python創建模塊及模塊導入的方法。具體分析如下: python學習手冊中寫道: 定義模塊,只要使用文本編輯器,把一些python代碼輸入到文本中,然後以.py為後綴名進行保存,任何此類文件都會被認為是python模塊。

G. 在哪裡可以看到JAVA的object類中clone方法的源代碼

看不到的,是C代碼。聽說Java開源了,你倒是可以去官網上看看。

調用中實現clonable介面並給出方法。

public class Example implements Clonable {

int valueToClone;

public Object clone() {
Object o = super.clone();
(Example) o).valueToClone = valueToClone;

return o;
}
}

另外參見API. 有的書建議不採用Clonable,因為非常難實現一個完美的Clone 鏈,且方法本身返回Object需要cast,並不美觀。可以自己寫一個介面代替。

H. Java,求Object的equals源代碼

"同一個對象的應用"
其實是指兩個對象的內容一樣。"equals"可以理解為兩個對象引用所指向的內容相同;"=="是指對象引用相同
;例如:string
str1=new
string("abc");string
str2=str1;string
str3=new
string("abc");string
str4=new
string("abc");str1==str2;為true,因為str1,str2都指向同一個"abc";str1.equals(str2);為true,因為str1,str2所指內容一樣就是"abc";str1==str3;為false,因為str3
又new了一塊新內存空間來放"abc",str1和str3不是指向同一個"abc";str1.equals(str3);為true,因為str1,str3所指內容一樣就是"abc";str1==str4;為false,因為str1和str4指向不同;str1.equals(str4);為false,因為str1,str4所指內容不一樣,一個是"abc"
一個是"abc"

I. 如何將object轉換成原來的類型

本文將對常用的轉換方法進行一個總結。常用的方法有Object.toString(),(String)要轉換的對象,String.valueOf(Object)等。下面對這些方法一一進行分析。方法1:採用 Object.toString()方法 請看下面的例子:
Object object = getObject();
System.out.println(object.toString());
在這種使用方法中,因為java.lang.Object類里已有public方法.toString(),所以對任何嚴格意義上的java對象都可以調用此方法。但在使用時要注意,必須保證object不是null值,否則將拋出NullPointerException異常。採用這種方法時,通常派生類會覆蓋Object里的toString()方法。方法2:採用類型轉換(String)object方法 這是標準的類型轉換,將object轉成String類型的值。使用這種方法時,需要注意的是類型必須能轉成String類型。因此最好用instanceof做個類型檢查,以判斷是否可以轉換。否則容易拋出CalssCastException異常。此外,需特別小心的是因定義為Object 類型的對象在轉成String時語法檢查並不會報錯,這將可能導致潛在的錯誤存在。這時要格外小心。如:
Object obj = new Integer(100);
String strVal = (String)obj;在運行時將會出錯,因為將Integer類型強制轉換為String類型,無法通過。但是,
Integer obj = new Integer(100);
String strVal = (String)obj;
如是格式代碼,將會報語法錯誤。
此外,因null值可以強制轉換為任何java類類型,(String)null也是合法的。方法3:採用String.valueOf(Object) String.valueOf(Object)的基礎是Object.toString()。但它與Object.toString()又有所不同。在前面方法1的分析中提到,使用第一種時需保證不為null。但採用第三種方法時,將不用擔心object是否為null值這一問題。為了便於說明問題,我們來分析一下相關的源代碼。Jdk里String.valueOf(Object)源碼如下:/*** Returns the string representation of the Object argument.** @param obj an Object.
* @return if the argument is null, then a string equal to
* "null"; otherwise, the value of
* obj.toString() is returned.
* @see java.lang.Object.toString()
*/ public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString();}從上面的源碼可以很清晰的看出null值不用擔心的理由。但是,這也恰恰給了我們隱患。我們應當注意到,當object為null時,String.valueOf(object)的值是字元串"null",而不是null!在使用過程中切記要注意。試想一下,如果我們用
System.out.println(String.valueOf(null));
System.out.println(null);
我們看到的輸出將是一模一樣的東西:null,但它們意義相同嗎?判斷一個字元串為空 s為一個字元串,判斷它為空的方法:if (null==s ||"".equals(s)) { ...... } 注意:這里的null==s和"".equals(s)不要寫成s==null和s.equals(s),因為""這個值是已經確定的,預知的,而s是未知的,所以用得不小心的時候s.equals("")就會出現nullpoint異常。在這里雖然不會,因為前面有if(null==s),但是習慣跟在那裡使用沒有關系的。不一定的equals方法,包括其它很多處理,如果用確定的值處理問題會比未確定的處理少很多bug。 String類型和Date類型的相互轉換 將String轉換為Date: String s="2007-06-21 10:50:50";
java.text.SimpleDateFormat FormatDate = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.util.Date date = FormatDate.parse(s);//轉成Date將Date轉換為String String.valueOf(date);Java如何獲得系統時間最近在學習Java,經常在工作中遇到一些小問題,Bai之後,找到問題的解決方法,要記錄下來呦,要不然,憑我的腦子,肯定不久就忘記了。呵呵。
想要獲得系統時間,不要日期,只要時間,可是Bai出來的都是帶著日期和時間案的,沒有單獨只有時間的例子。琢磨了一會之後,找到問題的解決方法。 import java.util.Date;
import java.text.DateFormat; Date now = new Date(); // Date()是java.util.Date類的構造方法 DateFormat d = DateFormat.getTimeInstance(); //getTimeInstance()獲得的是不帶日期的系統時間 String str = d.format(now); System.out.println("Today is " + str);//輸出 註:1.Date now = new Date(); 這句中的Date()是java.util.Date類的構造方法,而不是java.sql里的類,所以要在前面加上import java.util.Date;而不是 import java.sql.Date;這里曾經因為犯了這種低級錯誤而導致編譯出錯。

熱點內容
nginx怎麼訪問php 發布:2024-11-18 16:22:55 瀏覽:303
螞蟻外快賺錢腳本 發布:2024-11-18 16:21:52 瀏覽:178
cnc編程培訓學習 發布:2024-11-18 16:16:33 瀏覽:405
android查看工具 發布:2024-11-18 16:03:46 瀏覽:893
目前安卓11如何安裝 發布:2024-11-18 15:55:06 瀏覽:236
安卓結構光對比蘋果哪個快 發布:2024-11-18 15:50:03 瀏覽:930
天天酷跑3v3掛機腳本 發布:2024-11-18 15:43:02 瀏覽:461
pythonif字元串不等於 發布:2024-11-18 15:32:34 瀏覽:435
vr上用什麼存儲晶元 發布:2024-11-18 14:57:39 瀏覽:618
伺服器如何查原廠件和拆機件 發布:2024-11-18 14:54:18 瀏覽:358