String s1= "S";
String s2= "S";
String s3 = new String("S");
String s4 = new String("S");
System.out.println( s1==s2 + "," + s1==s3 + "," + s3==s4);//ture false false
String創建后不可改變,重新賦值意味著指向新的對象
若希望比較字符串是否相同,則可用 s3.equals(s4);//返回ture
"=="用于比較字符串首地址是否相同
常用String方法——圖自慕課網
warning:
1當返回位置時返回物理位置(從0開始)
2substring(x1,x2)返回的字串從物理地址x1——x2-1的字符串(不包括s[x2])
StringBuilder類——線程安全且可以修改的字符串
效率稍低于String
基本都支持String方法外,追加了一些方法
包裝類
常用于數據類型的相互轉化
裝箱:把基本類型轉換成包裝類,使其具有對象的性質
拆箱:和裝箱相反,把包裝類對象轉換成基本類型的值
轉化的實現:
基本類型轉換為字符串有三種方法:
1使用包裝類的 toString() 方法
2 使用String類的 valueOf() 方法
3 用一個空字符串加上基本類型,得到的就是基本類型數據對應的字符串
int c =5;
String str1 = Integer.toString(c);
String str2 = String.valueOf(c);
String str3 = c+" ";
將字符串轉換成基本類型有兩種方法
1調用包裝類的 parseXxx 靜態方法
2 調用包裝類的 valueOf() 方法轉換為基本類型的包裝類,會自動拆箱
String str = "5";
int x1 = Integer.parseInt(str);
int x2 = Integer.valueOf(str);
日期的格式化輸出
1Date類
//用format方法將日期轉化為指定格式文本
Date d = new Date();//表示當前時間
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");指定目標格式
String today = sdf.format(d);調用format()方法格式化時間
System.out.println(today);
//用parse()方法將文本轉化為日期
String day = "2016年11月10日 21:20:00";
SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date date = df.parse(day);
System.out.println(date);
warning:
1調用 SimpleDateFormat 對象的 parse() 方法時可能會出現轉換異常,即 ParseException ,因此需要進行異常處理
2使用 Date 類時需要導入 java.util 包,使用 SimpleDateFormat 時需要導入 java.text 包
2Calendar類
Calendar c = new Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
多線程的兩種實現方法
繼承Thread類
class ClassName extends Thread
public int x;
public Classname(int x){ this.x = x; }
public void run()
{
System.out.println(this.x+"開始");
try{Thread.sleep(1000*10);
}catch(Exception ex){}
System.out.println(this.x+"結束");
}
public class TextClass{
public static void main(String[] args){
Classname c1 = new Classname(1);
Classname c2 = new Classname(2);
Classname c3 = new Classname(3);
c1.start();
c1.start();
c1.start();
}
}warning:start方法重復調用的話,會出現java.lang.IllegalThreadStateException異常
Classname c1 = new Classname(1);
Classname c2 = c1;
c1.start();
c1.start();//出現error
用Runnable接口
class ClassName implements Runnable
public int x;
public Classname(int x){ this.x = x; }
public void run()
{
System.out.println(this.x+"開始");
try{Thread.sleep(1000*10);
}catch(Exception ex){}
System.out.println(this.x+"結束");
}
public class TextClass{
public static void main(String[] args){
Classname c1 = new Classname(1);
Classname c2 = new Classname(2);
Classname c3 = new Classname(3);
c1.start();
c1.start();
c1.start();
}
}