java字串String概述、常用構造器和麵試題
----------------------------- java字串概述、常用構造器和麵試題--------------------
資料型別
1. 基本資料型別
a. 數值型
(1) 整數型別(byte,short,int,long)
(2)浮點型別(float,double)
b. 字元型(char)
c. 布林型別(boolean)
2. 引用資料型別
a. 類(class)
b. 介面(interface)
c. 陣列([])
字串的概述
publicclass test1 {
publicstaticvoidmain(String[] args) {
//定義一個字串的變數,賦值"abc"
String
str = str + "de";
System.out.println(str);
}
在定義String str = “abc”的時候。“abc”是常量儲存資料共享區,定義時先會到資料共享區中去查詢是否存在“abc”這樣的字串,如果存
儲在的直接把“abc”的地址賦值給str,如果資料共享區中不存在“abc”那麼就去建立一個“abc”。
常量字串的特點:
不能改變
String類中,重寫了Object的toString方法.
--------------------字串的構造器---------------------------
String()
初始化一個新建立的
String(byte[] bytes)
通過使用平臺的預設字符集解碼指定的byte陣列,構造一個新的String。
String(byte[] byte, int offset, int length)
通過使用平臺的預設字符集解碼指定byte子陣列,構造一個新的String。
String(char[] value)
分配一個新的String,使其表示字元陣列引數中當前包含的字元序列。
String(char[] value, int offset, int count)
分配一個新的String,它包含取字元陣列引數一個字陣列的字元。
String(String original)
初始化一個新建立的String物件,使其表示一個與引數相同的字元
序列:換句話說,新建立的字串是該引數字串的副本。
例子:
publicclass test2 {
publicstaticvoidmain(String[] args) {
//建立一個空字串的物件;
String str = new String();
System.out.println("列印字串str:" + str + "-----");
//定義一個位元組陣列
byte[] bs ={97,98,99,100,101,102,103};
//以位元組陣列作為引數的字串物件的建立
String str1 = new String(bs);
//把位元組陣列中的每一個數值轉換成相對應的ascii的字元後組裝成字串
System.out.println("以位元組陣列作為引數的字串物件的建立:" + str1);
//第一個引數位元組陣列,第二個引數是從指定的索引開始,第三個引數擷取長度
//注意陣列長度越界
String str2 = new String(bs, 3, 4);
System.out.println("以位元組陣列作為引數的字串擷取建立:" + str2);
//建立一個字元陣列
char[] cs = {'a','b','g','t','o'};
String str3 = new String(cs);
System.out.println("以字元陣列作為引數建立字串:" +str3);
//第一個引數字元陣列,第二個引數是從指定的索引開始,第三個引數擷取長度
//注意陣列長度越界
String str4 = new String(cs,3,2);
System.out.println("以字元陣列作為引數的字串擷取建立:" + str4);
//以常量的字串類作為引數
String str5 = new String("qwe");
System.out.println("以常量字串作為引數:" + str5);
}
}
列印結果:
列印字串str:-----
以位元組陣列作為引數的字串物件的建立:abcdefg
以位元組陣列作為引數的字串擷取建立:defg
以字元陣列作為引數建立字串:abgto
以字元陣列作為引數的字串擷取建立:to
以常量字串作為引數:qwe
-------------------------面試題-----------------------------
publicclass test3 {
publicstaticvoidmain(String[] args) {
//建立常量的字串
String str = "helloworld";
//建立字串的物件
String str1 = new String("helloworld");
//兩個字串地址的比較
System.out.println("兩個字串地址的比較:" + (str == str1));
//兩個字串值的比較
System.out.println("兩個字串值的比較:" + str.equals(str1));
System.out.println("-----------------------------");
//定義一個字串的常量
String str2 = "renliang";
String str3 = "renliang";
//判斷兩個字串地址是否相等
System.out.println("判斷兩個字串地址是否相等:" + (str2 == str3));
System.out.println("-----------------------------");
String str4 = "hello";
String str5 = "world";
String str6 = "helloworld";
//str4和str5拼接後一定會產生新的字串
//即使在資料共享區中儲存拼接後的值相等的字串,也會產生新的地址
System.out.println(str6 == (str4 + str5));
//如果是兩個沒有引用的常量做拼接那麼就會去資料共享區中查詢是否有相等的字串
//如果有相等的就不去建立新的字串了,直接使用
System.out.println(str6 == ("hello" + "world"));
}
}
結果:
記憶體圖:
String str = “hellworld”在資料共享區建立的是一個物件。
String str1 = new String(“helloworld”)
在堆中建立一個字串的物件,然後再到資料共享區中建立一個字串的常量的物件,然後把堆中的物件指向資料共享區中的物件。如果資料共享區有相同的字串物件,則值需在堆中建立一個物件,然後指向資料共享區中相同的常量字串。
相關推薦
java字串String概述、常用構造器和麵試題
----------------------------- java字串概述、常用構造器和麵試題--------------------資料型別1. 基本資料型別a. 數值型(1) 整數型別(byte,short,int,long)(2)浮點型別(float,double)b
JAVA字串String類的常用方法
String類的構造方法 String(char a[]) String(char a[], int offset, int length) String(char[] value) 字串查詢 indexOf() lastIndexOf() 獲取指定索引位置的字元 charAt(int in
JAVA字串String、StringBuffer、StringBuilder、基本資料型別包裝 ----java基礎一
String 字串: Java中用String類進行描述。對字串進行了物件封裝,這樣的好處是可以對字串這種常見資料進行方便的操作。 字串String一旦被初始化就不可變,儲存位置在記憶體方法區的常量池裡。如果想要改變需要用StringBuffer函式 構造字串的兩種方法:
Java反射《二》獲取構造器
標識 except 修飾 args anti static @class 輸出 ins 1 package com.study.reflect; 2 3 import java.lang.reflect.Constructor; 4 import java.la
【讀書筆記 - Effective Java】02. 遇到多個構造器參數時要考慮用構建器
wid style ive tex 解決 相關 class javabeans stat 類有多個可選參數的解決方案:1. 重疊構造器模式可行,但是當有許多參數的時候,客戶端代碼會很難編寫,並且仍然較難以閱讀。2. JavaBeans模式,調用一個無參構造器來創造對象,然後
Java中用靜態工廠方法代替構造器的優缺點
Effective Java學習筆記,靜態工廠方法的善用。 一般情況下,對於類而言,我們獲取一個類的例項時,最常用的方法是提供一個公有的構造器。 但是還有一種方法,類可以提供一個公有的靜態工廠方法,它只是個返回類的例項的靜態方法而已。但是靜態工廠方法卻又許多妙用之處。
JAVA字串替換replace、replaceAll、replaceFirst之間區別詳解
String的replaceAll跟replaceFirst用到了正則表示式 String s = "my.test.txt"; System.out.println(s.replace(".", "#")); System.out.println(s.replaceAll
jnhs-java實體類的有參構造器 無參構造器Could not instantiate bean class 實體類No default constructor found
new一個物件的時候要用到建構函式, 例如Hello hello = new Hello();這時呼叫的是Hello的無引數構造方法; Hello hello = new Hello("hi");這個是呼叫Hello有引數構造方法, 在JAVA中如果不寫構造方法的話,會預設加上一個無引數的構
《Java程式設計思想》讀書筆記——構造器初始化順序
Java盡力保證:所有變數在使用前都能得到恰當的初始化。對於區域性變數,Java以編譯時錯誤的形式來貫徹這種保證。 public static void main(String[] args) { int i; System.out.prin
Day-10 java-list集合框架、迭代器
List-集合框架 關係 interface java.lang.Iterable<--java.util.Collection<--interface java.util.List Collcetion介面有兩個子介面,List和set。 List.add 新增 Lis
Java字串String類學習筆記1
今天來學習一下String類的原始碼,首先看一下String類, public final class String implements java.io.Serializable, Comparable<String>, CharSeque
Java字串String類學習筆記2
Java字串String類學習筆記一 ,這篇文章主要學習了String的域及以下的幾個幾個方法: int length() isEmpty() charAt(int index) getBytes(String charsetName) contentEqua
黑馬程式設計師——Java之String類、基本資料型別物件包裝類等
例如:parseInt("0", 10) 返回 0。 parseInt("473", 10) 返回 473。 parseInt("-0", 10) 返回 0。 parseInt("-FF", 16) 返回 -255。 parseInt("1100
#Java集合框架--ArrayList容器的構造器
ArrayList類實現了List介面,它繼承自AbstractList抽象類,繼承機構如下所示: public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Se
Java基於String Boot、Thrift、Zookeeper實現RPC
Thrift的優勢是支援異構系統,相對於http協議效率較高,之前專案一直用的是dubbo,最近想了解一下thrift相關內容,以下是嘗試工程中的一些內容,做一些記錄 說明 1.程式碼基於JDK8、spring/boot實現 2.註冊發現採用zooke
java中String類、StringBuffer類、StringBuilder類的區別(未完待續)
);} public CharSequence subSequence(int beginIndex, int endIndex) { return this.substring(beginIndex, endIndex); } /** * 字串拼接
java io流概述及常用流解析,我不信你用的很熟
Java中I/O流概述 對於輸入流和輸出流的基本概念通過下面的圖進行說明: 上圖是一臺機器通過網路讀取服務端資料,此圖要說明的是流的一些基本概念。在伺服器端,資料儲存在磁碟上,將磁碟上的資料讀取到伺服器記憶體的過程是輸入流,伺服器通過網路將記憶體中的資料輸出到客戶端對於伺服器記憶體來說
Spring 五、使用構造器注入:實現constructor-arg標籤注入ConstructorArgument
第四周: 實現建構函式注入 引入ConstructorArgument 如何找到合適的構造器: ConstructorResolver //petstore-v3.xml <bean id="petStore" class="org.litesp
Scala——類的定義、重新實現toString方法、檢查先決條件、新增欄位、私有方法、自指向、輔助構造器、操作符、過載、隱式轉換
/** * Created by jiaoshuhai on 2018/4/23. *///類的建立class Rational(n:Int,d:Int){//類引數,oject無引數 //檢察先決條件 require(d != 0) private def gcd(a : Int ,b :Int) :
Java中 String類、StringBuilder類、StringBuffer類 區別與如何選擇
1. 概述: 1.1 String 字串常量,但是它具有不可變性,就是一旦建立,對它進行的任何修改操作都會建立一個新的字串物件。 1.2 StringBuffer