日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java判断输入的格式化_Java的字符串及格式化输入输出

發布時間:2024/10/6 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java判断输入的格式化_Java的字符串及格式化输入输出 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java的字符串及格式化輸入輸出

1.String的不可變

在淺析Java的jvm上的內存位置的分配里已經說明,String使用了常量池技術,所以在棧中的應用要么是指向常量池,要么是指向堆,String是一個常量類,不可以被繼承。

String? str1=”hello”;//指向常量池

String? str2=new? String(”hello”);//指向堆

2.String的”+”號原理如下

String str1 = "str1" + "--str2";

// 相當于如下

StringBuilder builder = new StringBuilder();

builder.append("str1").append("--str2").toString();/*假如想進一步分析可以看匯編class文件*/

備注:String的加號的缺陷是對其進行改變等同于每次生成了一個新的 StringBuilder對象,這樣就會導致無用的實例較多導致GC開始工作,影響工作效率。

public classStringDemo1 {public static voidmain(String[] args) {

String str="";

String [] fields={"1","2"};for (int i = 0; i < args.length; i++) {//每次都需要創建StringBuilder 從而降低了效率

str+=fields[i];

}

StringBuilder builder= newStringBuilder();for (int i = 0; i < args.length; i++) {//效率比上述要高,減少了每次StringBuilder的創建

builder.append(fields[i]);

}

}

}

3.string的==號

string的==號比較的是引用地址;//可以看class文件

System.out.println(new String ("abc")==new String("abc"));//false;

System.out.println(new String ("abc")=="abc");//false

System.out.println("abc"=="abc");//true

4.string的isempty

比較的是內容長度是否為0;//可以看源碼

String str=null;

System.out.println(str.isEmpty());//運行時錯誤

System.out.println("".length());//0

System.out.println("".isEmpty());//true

5.String的equals

比較的是內容是不是相同;//可以看源碼

System.out.println(new String ("abc").equals(new String("abc")));//true

6.Stringbuffer

StringBuffer線程安全的可變字符序列,主要使用的方法是append以及insert,保證線程安全主要有兩種方式(暫且不論)

7.Stringbuilde線程是不安全的,主要使用的方法同stringbuffer,效率高于stringbuffer

8.格式化輸出(實現國際化等)

%s? 字符串?? %d整數? %f 浮點型小數? %% 百分比類型 %tx日期與時間類型(x代表不同的日期與時間轉換符) < 格式化前一個轉換符所描述的參數 ("%f和%<3.2f", 99.45) 99.450000和99.45? $ 被格式化的參數索引? 等

轉換符:c包括全部日期和時間信息? F “年-月-日”格式?? D “月/日/年”格式

r? “HH:MM:SS PM”格式(12時制)T “HH:MM:SS”格式(24時制)

R “HH:MM”格式(24時制)等

//上述格式可以具體的區查看java.util.Formatter類

9.實例

實例1(實現國際化)

文件1:i18n_en_US.properties

name=name

age=age

文件2:i18n_zh_CN.properties

name=\u540D\u79F0

age=\u5E74\u9F84

文件3:login.txt

張三,18

李四,24

代碼

ResourceBundle bundle = ResourceBundle.getBundle("i18n", Locale.US);

String name = bundle.getString("name");

String age = bundle.getString("age");

String filePath = "F:\\eclipse\\eclipse\\StringTest\\src\\login.txt";

try {

@SuppressWarnings("resource")

Scanner scanner = new Scanner(new File(filePath));

while(scanner.hasNextLine()) {

String line = scanner.nextLine();

String[] infoSplit = line.split(",");

String info = String.format("%s:%s\t%s:%s", name,infoSplit[0], age,infoSplit[1]);????????????????????? ?? System.out.println(info);

/*當然也可以System.out.format的方式輸出,上述也可以 用 DateFormat, MessageFormat, NumberFormat去做,大同小異。*/

}

} catch (FileNotFoundException e) {

throw new Exception(filePath + "路徑不存在!");

}

實例二(實現日期的格式化)

Date date = new? Date();

System.out.format("%1$tF?? %1$tT",date);

正則

判斷是否匹配給定的正則表達式用于驗證matches(String regex)

System.out.println("123abc".matches("\\d+[a-zA-Z]+"));

//具體查看java.util.regex.Pattern。

替換所有的相應的字符replaceAll(String regex, String replacement)

System.out.println("i? love? you? i love you ".replaceAll("love", "sick"));

// replaceFirst(String regex, String replacement) 替換第一個

截取需要的內容

String? str= "12344567890jk1234567890111fgf123456";

Pattern compile = Pattern.compile("\\d{11,}");

Matcher matcher = compile.matcher(str);

while(matcher.find()) {

String group = matcher.group();

if(group.length()==11) {

System.out.println(group);

}

}

//matcher相應的還有start? end方法,匹配開始和結束的位置,lookat從開始位置找(這也是與find的區別)等

改變類默認的輸出方式

可以通過改變tostring方法來實現

總結

以上是生活随笔為你收集整理的java判断输入的格式化_Java的字符串及格式化输入输出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。