相關類以及常用方法

1、system(系統相關類)

常用方法:

a)?????? : system.arraycopy(制定數組,開始復制的位置,目標數組,開始粘貼的位置,需要復制的長度)

將指定源數組中的數組從指定位置復制到目標數組的指定位置。

a)?????? :System.currentTimeMIllis返回當前時間(以毫秒為單位)。

該方法返回值類型為long 所以調用結果用long類型變量接收。

b)?????? System.exitint status)終止當前最正在運行的Java虛擬機,參數作狀態碼,按照慣例非0表示異常終止。

2、(數學相關類)

. Math

a)?????? MathMath類包含執行基本數字運算的方法,如基本指數,對數,平方根和三角函數。

隨機數生成: double random();返回帶正號的 double 值,該值大于等于 0.0 且小于 1.0。返回值是一個偽隨機選擇的數,在該范圍內(近似)均勻分布。需要生成隨機數的范圍0-X,便在隨機數后面*X然后進行強制轉換.

b)?????? BigDecimalfloat/double都不能表示精確的小數,此時使用BigDecimal,用于處理經前和精度要求較高的數據。

c)?????? BigInteger表示大整數,如果兩個long類型的足大指運算,結果long儲存不下,此時使用BigInteger,一般不用。(因為long的數據范圍已經夠大了)

加減乘除方法和bigdecimal相同。

. Random

?

隨機數生成: nextInt(int n) 返回一個偽隨機數,它是取自此隨機數生成器序列的、在 0(包括)和指定值(不包括)之間均勻分布的 int 值

?

3、字符串相關類

字符串的分類:

不可變的字符串:(String)當對象創建完畢之后,該對象的內容是不可改變的。一旦內容改變就是一個新的對象。

可變的字符串:(StringBuilder/StringBuffer),當對象創建完畢之后,該對象的內容發生改變的時候,對象保持不變。

一、String類:不可變的字符串。內容改變后相對應的內存地址也改變了。所以就相當于一個新的對象。

常量池:抓們儲存常量的地方,都指的方法區中。

編譯常量池:把字節碼加載進JVM的時候,儲存的是字節碼的相關信息。

運行常量池:儲存常量數據(研究)。

-------------------------------------------------------------------------------

面試題:

1、下列代碼中分別創建了幾個String對象

String? str?? =? “asdf”;?????

最多創建一個String對象,最少不創建String對象

如果在常量池中已經存在“asdf”,那么str直接引用,此時不創建String對象。

否則,現在常量池創建“asdf”內存空間,在引用。

String? str1? =? new? String(“asdf”);

最多創建兩個String對象,至少創建一個string對象。

New關鍵字:絕對會在堆空間創建內存區域,所以至少創建一個對象。

2:判斷下列代碼創建了幾個String對象,彼此直接是否相等.

?? String str1 = "ABCD";

?? String str2 = "A" +"B"+"C"+"D";? 編譯器優化之后,該代碼等價于 str1.

?? String str3 = "AB"+"CD";

?? String c = "CD";

?? String str4 = "AB" + c;

?? String str5 = "AB" + getXX();? (備注:getXX方法返回"CD");

?? String str6 = new String(“ABCD”)

==判斷:?? str1 == str2 ? // true

str1 == str3 ??? //true

str1 == str4 ??? //false

str1 == str5 ??? //false

str1 == str6 ??? //false

-----------------------------

?

String對象比較:

?1):單獨使用""引號創建的字符串都是直接量,編譯期就已經確定存儲到常量池中;

?2):使用new String("")創建的對象會存儲到堆內存中,是運行期才創建;

?3):使用只包含直接量的字符串連接符如"aa" + "bb"創建的也是直接量編譯期就能確定,已經確定存儲到常量池中;

?4):使用包含String直接量(final修飾符)的字符串表達式("aa" + s1)創建的對象是運行期才創建的,存儲在堆中;

通過變量/調用方法去連接字符串,都只能在運行時期才能確定環境變量的值和方法的返回值,不存在編譯優化操作。

-----------------------------

比較字符串: ?==:只能比較內存地址,若要比較內容:equals.

?

String類中的常用方法:

?

public class StringDome {
public static void main(String[] args) {
String str1 = "ABCD";
String str2 = "A" +"B"+"C"+"D"; //編譯器優化之后,該代碼等價于 str1.
String str3 = "AB"+"CD";
String c = "CD";
String str4 = "AB" + c;
String str5 = "AB" + getXX(); //(備注:getXX方法返回"CD");
String str6 = new String("ABCD");
//用==判斷:
System.out.println(str1 == str2); // true
System.out.println(str1 == str3); //true
System.out.println(str1 == str4 ); //false
System.out.println(str1 == str5); //false
System.out.println(str1 == str6); //false
System.out.println(str1.equals(str2)); // true
System.out.println(str1.equals(str3)); // true
System.out.println(str1.equals(str4)); // true
System.out.println(str1.equals(str5)); // true
System.out.println(str1.equals(str6)); // true
String name ="";
System.out.println(StringUtil.judgeString(name));

}

private static String getXX() {

return "CD";
}
}

---------------------------------------------------------------------------------------------------------------------------------

public class StringDome2 {

public static void main(String[] args) {
testString();
gainStringPrice();
capitalized();

}
private static void capitalized() {
/**
* toLowerCase() 將所有在此字符 String使用默認語言環境的規則,以小寫。
* toUpperCase() 將所有在此字符 String使用默認語言環境的規則大寫。
*/
System.out.println("ASSxsdfhsDSF".toLowerCase());
System.out.println("ASSxsdfhsDSF".toUpperCase());

}
private static void gainStringPrice() {
/**
* 獲取字符串信息:
* int length();獲取字符串長度
* char charAt(int index);返回index索引處的值。
* int index (String str);返回指定子字符串第一次出現的字符串內的索引。
* int lastIndexOf(int ch)返回指定字符的最后一次出現的字符串中的索引。
*/
String read = "ASDFGHJKDL";
System.out.println(read.length());
System.out.println(read.charAt(2));
System.out.println(read.indexOf("DF"));
System.out.println(read.lastIndexOf("KD"));

}
/**
* 把String字符串轉換成byte數組 Byte [] a = getBytes(x);
* 把String字符串轉換成char數組 Byte [] a = x.toCharArray();
* 把byte數組轉換成String字符串 String x = new String(byte數組名);
* 把char數組轉換成String字符串 String x = new String(char數組名);
*/

private static void testString() {
//byte數組與String之間的相互轉換。
byte [] a = {'3','b','d','f','9'};
String x = new String(a);
System.out.println(x);
byte [] b = x.getBytes();
System.out.println(Arrays.toString(b));
//char數組與String之間的相互轉換
char [] c = {'a','s','d','f'};
x = new String(c);
System.out.println(x);
char []ds = x.toCharArray();
System.out.println(Arrays.toString(ds));

}

}

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

判斷字符串是否包含指定字符串

??????? boolean contains(CharSequence?s)//CharSequence此處代表字符串
??????? int indexOf(String str);返回字符串出現的第一次的索引,字符串里沒有指定的字符串則返回-1.

?

分別用StringStringBuiderStringBuffer拼接50000次字符串,對比各自損耗的時間。

經過測試:

String做字符拼接的時候性能極低,原因是string是不可變的,內次內容改變都會在內存中創建新的對象。

String 耗時1315ms

StringBuider 耗時 1ms

StringBuffer 耗時 3ms

結論:以后拼接字符,統統使用StringBuider / StringBuffer,不要使用string.

?

StringBuider 和 StringBuffer都表示可變的字符串,功能方法都是相同的。

唯一區別:

StringBuffer :StringBuffer中的方法名都使用了synchronized修飾符,表示同步的,在多線程并發的時候可以保證線程安全。(保證線程安全,性能也就降低了)

StringBuider(建議使用):StringBuider中的方法沒有使用synchronized修飾。不安全,但是性能較高。

使用StringBuider無參數構造器,在底層創建了一個長度為16的char數組。

Char [] array = new StringBuider(16);

此時該數組只能儲存16個字符,如果超過了得自動擴容。

自動擴容(創建長度更大的數組,在把之前的數組拷貝到新數組)

用Stringbuider創建一個長度為60的char數組:

char [] arr = new StringBuider(60);

---------------------------

常用方法:

1、append(Object obj):表示增加任意數據類型。

2、insert(int offset,Object obj)將 Object 參數的字符串表示形式插入此字符序列中。

3、StringBuffer delete(int start,int end) 刪除此序列的子字符串中的字符。 子串開始于指定start并延伸到字符索引end - 1 ,或如果沒有這樣的字符存在的序列的結束。 如果start等于end ,則不作任何更改。

?

轉載于:https://www.cnblogs.com/it-xiaoBai/p/8081350.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252625.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252625.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252625.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2021-11-15

本文將重點圍繞國產CPU的發展歷程與當前產業鏈各領軍企業的布局情況作詳盡解讀(并包含特大號獨家整理的最新進展),具體如下: 1、國產CPU發展歷程回溯 2、飛騰:PK生態的主導者 3、鯤鵬:快速崛起的領導者 …

關于在ubuntu下配置AMD顯卡驅動的總結

同樣先卸載先前版本 代碼:sudo sh /usr/share/ati/fglrx-uninstall.sh代碼:sudo apt-get remove --purge fglrx fglrx_* fglrx-amdcccle* fglrx-dev*重啟 代碼:sudo reboot下載驅動,右邊直接有ubuntu32位和64位驅動鏈接:http://support.amd.com/en-us/do…

Python3中的hasattr()

Python3已經將此內置函數移除了。查閱Python v3.0 documentation發現可以使用 hasattr(object, name)內置函數來完成callable的功能,方式如下: 3.0之前:callable(func) 3.0之后:hasattr(func, __call__) 這兩者結果是相同的。 轉載…

計算機結構簡圖

北橋,南橋是主板上芯片組中最重要的兩塊了.它們都是總線控制器.他們是總線控制芯片.相對的來講,北橋要比南橋更加重要.北橋連接系統總線,擔負著cpu訪問內存的重任.同時連接這AGP插口,控制PCI總線,割斷了系統總線和局部總線,在這一段上速度是最快的.南橋不和CPU連接通常用來作I/…

原始Ajax

var $ { request:function(obj){ //1. 獲得xmlhttprequest對象兼容性處理 var xhr; //undefined未定義 try{ //主流瀏覽器里面的ajax對象 xhr new XMLHttpRequest(); }catch(e){ //IE低版本的瀏覽器 xhr new ActiveXObject("Microsoft.XMLHTTP"); } //2. 建立和…

Servlet 與 Ajax 交互一直報status=parsererror

Servlet 與 Ajax 交互一直報statusparsererror 原因:servlet 返回的數據不是 Json 格式 1、JS代碼為: 1 var jsonStr {clusterNum:2,iterationNum:3,runTimes:4};2 $.ajax({3 type: "post",4 //http://172.2…

25LINQ拾遺及實例

投影 □ 遍歷數組索引,Select獲取 int[] indexes {0, 2}; string[] strs {"a", "b", "c", "d"}; var result from i in indexes select strs[i]; foreach (string str in result) { Console.Write(str " &quo…

國產CPU的6大品牌,3大路線對比

這些年來,中國最想發展的科技產品是什么?那必須是芯片,特別是2018年中興事件、2019年華為事件之后,國內的芯片產業就徹底地火爆了起來。 按照數據顯示,截止至2020年10月份,國內已經有27萬家芯片企業&#…

BluePrint和ORM

一、藍圖創建 1 #引入庫文件2 from flask import Blueprint,request,jsonify3 4 user Blueprint(5 "site",6 __name__,7 template_floder"templates_folder_path",8 static_floder"static" 9 ) #創建藍圖 10 1…

【js實例】Array類型的9個數組方法,Date類型的41個日期方法,Function類型

前文提要:【js實例】js中的5種基本數據類型和9種操作符 Array類型的9個數組方法 Array中有9個數組方法: 1.檢測數組 2.轉換方法 3.棧方法 4.隊列方法 5.沖排序方法6.操作方法 7.位置方法 8.迭代方法 9.歸并方法 在實例中介紹,實例如下 /* Array類型 js數組中的每一項可以用來保…

調用詠南中間件插件演示

function GetSvrData(const accountNo, defineId: WideString; inParams: OleVariant): OleVariant; virtual; abstract; // accountNo,帳套編號 // defineId3位插件編號2位自定義編號,defineId必須是唯一的 // inParams,TDataSet.Params的OL…

龍芯與飛騰roadmap

飛騰roadmap 龍芯roadmap 龍芯系列處理器芯片是龍芯中科技術有限公司研發的具有自主知識產權的處理器芯片,產品以32位和64位單核及多核CPU/SOC為主,主要面向國家安全、高端嵌入式、個人電腦、服務器和高性能機等應用。產品線包括龍芯1號小CPU、龍芯2號中…

vim 多窗口操作

1、打開多個窗口打開多個窗口的命令以下幾個:橫向切割窗口:new窗口名(保存后就是文件名) :split窗口名,也可以簡寫為:sp窗口名縱向切割窗口名:vsplit窗口名,也可以簡寫為:vsp窗口名2、關閉多窗口可以用:q!,…

BZOJ 2440 完全平方數(莫比烏斯-容斥原理)

題目鏈接:http://61.187.179.132/JudgeOnline/problem.php?id2440 題意:給定K。求不是完全平方數(這里1不算完全平方數)的倍數的數字組成的數字集合S中第K小的數字是多少? 思路:首先,答案不超過…

在Eclipse中添加JDK源碼包

一直有這想要在Eclipse直接閱讀JDK的需求,之前用的都是反編譯的,由于我用的反編譯的插件去掉了源碼內容的注釋,所以想直接導入JDK源碼包: 詳細步驟: 打開Eclipse, 菜單欄 選擇 Window 下拉種選取 Preferences 窗口. 以…

南橋芯片與北橋芯片

什么是芯片組 芯片組(英語:Chipset)是一組共同工作的集成電路“芯片”,并作為一個產品銷售。它負責將計算機的微處理器和計算機的其他部分相連接,是決定主板級別的重要部件。以往,芯片組由多顆芯片組成&am…

spark 應用場景2-身高統計

原文引自:http://blog.csdn.net/fengzhimohan/article/details/78564610 a. 案例描述 本案例假設我們需要對某個省的人口 (10萬) 性別還有身高進行統計,需要計算出男女人數,男性中的最高和最低身高,以及女性中的最高和最低身高。本…

阿里云OSS linux使用備忘錄

ossutil config example: accessKeyId "AccessKeyId"; accessKeySecret "AccessKeySecret"; ###以上兩個在 https://help.aliyun.com/knowledge_detail/38738.html endPoint "http://oss-cn-beijing.aliyuncs.com";轉載于:https://www.cnblog…

纏繞多年的PCIE通道數問題終于完全明白了,歡迎指正

CPU的PCIE通道數,之前一直都是一個眾說紛紜的問題很多人都會問到,主板上不同的M.2接口,接SSD性能是否一樣,接太多的SSD,是否會占用顯卡的PCIE帶寬,今天我又看了幾篇網上的文章,終于十分清楚地搞…

vue-router實例

最近剛剛用vue寫了個公司項目,使用vue-cli構建的,算是中大型項目吧,然后這里想記錄并且分享一下其中的知識點,希望對大家有幫助,后期會逐漸分享;話不多說,直接上代碼!! app.vue 1 &l…