Object.toString()返回字串的意義:物件名[email protected]+物件記憶體地址?
在Java中,如果一個物件未重寫toString()方法,那麼它將會呼叫父類的toString(),如果父類也沒有重寫這個方法,那麼就迭代往上呼叫,直到Object的toString()方法。
ps:八種基本資料型別沒有toString()方法;只能使用相應的包裝類,才能使用toString();toString()是相對於物件而言的,Object類中有這個方法,所以所有物件都有這個方法,程式設計師可以自己重寫這個方法來達到自己想要的輸出;
public clas ToStringTest{ public static void main(String[] args){ long a=123; Long aa=new Long(a);//使用包裝類 String ii=aa.toString();//使用aa物件的toString()方法 System.out.println(ii);//輸出轉換的結果 } }
我們在列印這個toStirng()方法的時候,會出現[email protected]字樣,那麼@後面的值到底是什麼呢,它是物件所在的記憶體地址麼?下面我們來證明:
import java.util.ArrayList; import java.util.List; publicclass ObjectToStringTest { private static final intSIZE=10000; publicstaticvoid main(String[] args) { //建立列表存放物件 List<Object> list = new ArrayList<Object>(); int existNumber=0; //新建SIZE個物件,如果toStirng代表的是記憶體地址,地址是不會重複的, //那麼list中應該不會存在重複的元素。 //list的大小應該為SIZE for(int i=0;i<SIZE;i++){ Object obj = new Object(); if(list.contains(obj.toString())){ System.out.println("物件:"+obj.toString()+"已存在!"); existNumber++; }else list.add(obj.toString()); } System.out.println("列表List的大小:"+list.size()); System.out.println("重複元素的個數:"+existNumber); System.out.println("===============華麗的分割線==============="); //清空list list.clear(); existNumber=0; //新建一個物件的時候,變數名是對這個物件的應用(相當於物件的"地址") //利用這個原理,我們再測試 for(int i=0;i<SIZE;i++){ Object obj = new Object(); if(list.contains(obj)){ System.out.println("物件:"+obj+"已存在!"); existNumber++; }else list.add(obj.toString()); } System.out.println("列表List的大小:"+list.size()); System.out.println("重複元素的個數:"+existNumber); } }
執行結果如下:
物件:[email protected]已存在!
物件:[email protected]已存在!
列表List的大小:9998
重複元素的個數:2
===============華麗的分割線===============
列表List的大小:10000
重複元素的個數:0
檢視Object原始碼:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
原來返回的是hashCode,而hashCode演算法可能出現hash衝突,所以上面的重複情況了。
PS:如果沒有出現重複情況,可以增大常量SIZE。
相關推薦
Object.toString()返回字串的意義:物件名<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7e553e">[email160;protected]a>+物件記憶體地址?
在Java中,如果一個物件未重寫toString()方法,那麼它將會呼叫父類的toString(),如果父類也沒有重寫這個方法,那麼就迭代往上呼叫,直到Object的toString()方法。 ps:八種基本資料型別沒有toString()方法;只能使用相應的包裝類,才能
shell腳本中的$# $0 <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f8dcb8">[email160;protected]a> $* $$ $! $?的意義
腳本 $* width 上一個 pre shell int .cn height 轉載自:http://www.cnblogs.com/davygeek/p/5670212.html 今天學寫腳本遇到一些變量不認識,在此做下記錄。 變量 含義 $0 當前腳本的文件
linux bash Shell特殊變數:Shell $0, $#, $*, <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="8aaeca">[email160;protected]a>, $?
在linux下配置shell引數說明 前面已經講到,變數名只能包含數字、字母和下劃線,因為某些包含其他字元的變數有特殊含義,這樣的變數被稱為特殊變數。 例如,$ 表示當前Shell程序的ID,即pid,看下面的程式碼: [[email protected] /]$ ec
面試題:一個字串包含英文和特殊字元,特殊字元不變,英文順序反過來,比如string str="<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2b4d0a4f5c6b">[email160
public class Reverse { public static void main(String[] args) { String str = "[email protected]!tk"; char[] chars = str.toCh
挖坑指南:iView Select的<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d798a7a3beb8b997b4bbbeb4bc">[email160;protected]a>事件無效
前言 日常挖坑。。 開始 上車。。 實踐 bug描述:Select元件,設定了filterable和remote,前端啟用模糊查詢。期望在使用者選擇某一結果項時,獲取選擇的物件。給Option綁定了點選事件,但是並未生效。 為什麼呢? 應該是元件自身做了事件監聽。 那
【轉載】解決方案:<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2f48465b6f48465b475a4d014c4042">[email160;protected]a>出現Permissi
遇到的問題 今天心血來潮,想將intellij上的專案程式碼放到GitHub上管理。 在進行新增遠端庫的時候,出現了:[email protected]出現Permission denied (publickey) 原因是 ./ssh目錄預設在C:\Users\VULCAN\.ssh,而我
踩坑之路<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b19c9c9cf1e3d4c0c4d4c2c5f3ded5c8">[email160;protected]a>傳物件
在postmen上使用@RequestBody傳物件,接受不到引數。 報錯: { “timestamp”: 1542330043448, “status”: 400, “error”: “Bad Request”, “exception”: “org.springframework.ht
修改字串<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="85e4a3e7a3e6c5e4">[email160;protected]a>&b&c....中b的值並輸出改變b值後的字串
修改字串a&b&[email protected]&b&c…中b的值並輸出改變b值後的字串 需求:車輛掃描PDA入庫,每次入庫的時候都要修改入庫單的待入庫數量,入庫單中只有一個a&b:&@a&b&
【Shell】linux bash Shell特殊變數:Shell $0, $#, $*, <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4f6b0f">[email160;protected]<
在linux下配置shell引數說明 前面已經講到,變數名只能包含數字、字母和下劃線,因為某些包含其他字元的變數有特殊含義,這樣的變數被稱為特殊變數。 例如,$ 表示當前Shell程序的ID,即pid,看下面的程式碼: $echo $$ 執行結果 29949
手寫<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="92e0f7f6fbe1d2d1f3f1faf7f3f0fef7">[email160;protected]a>註解 引數java物件作為ke
1.實現方式說明 本文在---- 手寫redis @ Cacheable註解支援過期時間設定 的基礎之上進行擴充套件。 1.1問題說明: @ Cacheable(key = “'leader'+#p0 +#p1 +#p2” )一般用法,#p0表示方法的第一個引數,#p1表示
錯誤解決辦法:<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="722d283c21133b11373643370432">[email160;protected]a>@GLIBCXX_3.4
使用gcc編譯,產生錯誤如下: /usr/bin/ld: gh_datacenter.o: undefined reference to symbol '[email protected]@GLIBCXX_3.4' //usr/lib/x86_64-linux-gnu/libstd
Spring中Bean的生命週期之<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="476a6a6a6a6a0705222629">[email160;protected]a>方法進行物件的初始化
方法:通過@Bean指定init-method和destroy-method; 注:單例項和原型模式物件的建立時間和初始化銷燬的時間順序不同。 一、單例項模式 1、建立Car例項物件,並建立初始化和銷燬方法 package com.atguigu.bean; imp
踩坑之路<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="634e4e4e2331061216061017210c071a">[email160;protected]a>傳物件
在postmen上使用@RequestBody傳物件,接受不到引數。 報錯: { “timestamp”: 1542330043448, “status”: 400, “error”: “Bad Req
郵箱:<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d3e2ebe0e7e2e0e2e7e1e493a2a2fdb0bcbe">[email160;protected]a>
10/16 這個星期日就要體側了,這個1000m感覺比ccpc還要難應付。所以這幾天晚上的健身時間就變成了操場上的跑步時間。為什麼強調操場?因為我在健身房的跑步機上可以1000跑的速度在操場上只能怕跑800。風阻太大了! 10/17 中午吃飯的時候無聊就看了會演
【逆風的方向 更適合飛翔】郵箱:<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="80f3f2b1b9b9b3b0b8b2b9c0b1b6b3aee3efed">[email160;protected
專欄達人 授予成功建立個人部落格專欄
【劉本龍的專欄】個人郵箱:<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7d4e4d45444d4d454f4d4c3d0c0c531e121053">[email160;protected]
java高階工程師,5年工作經驗,一直專注於java領域的學習研究。 對java分散式高併發等有深入研究. 曾就職於 京東、網易 等公司. 聯絡方式:3089008201 技術交流QQ群:684457529
<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="99eae9ebf0f7fefbf6f6ede7d9c8ecfcebe0">[email160;protected]a>到DTO物件
我們有時在進行開發過程中,使用jpa的@Query註解去選擇多張表然後返回一個DTO物件,這個時候我們需要特殊處理一下,因為預設情況下,你的jpa程式碼是不認DTO物件的。 參考文章:https://smarterco.de/spring-data-jpa-query-result-to-dto/ en
郵箱:<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="eedfd6dddadfdddfdadcd9ae9f9fc08d8183">[email160;protected]a>
TSP TSP問題非常經典,(旅行商問題)是指旅行家要旅行n個城市,要求各個城市經歷且僅經歷一次然後回到出發城市,並要求所走的路程最短。 如圖,從0開始,把1,2,3都走一遍然後回到0,求最短路徑。 方法有很多 暴力法:城市順序全排列,找到最短距離
郵箱:<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2f1e171c1b1e1c1e1b1d186f5e5e014c4042">[email160;protected]a>
#include<stdio.h> #include<string.h> #define D long long #define N 109 #define MOD ((int)1e9+7) struct matrix{ int
郵箱:<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="fccdc4cfc8cdcfcdc8cecbbc8d8dd29f9391">[email160;protected]a>
本來寫了很多的,一不小心就刪掉了,哎。懶得重寫了 所有公式要求a與m互質 費馬小定理: :am≡a(mod)ma^m≡a(mod)mam≡a(mod)m , am−1≡1(mod  m)a^{m-1}≡1(mod \;m)am−1