java日常記錄薄
1,The project cannot be built until build path errors are resolved。。。。
當專案匯入後出現這樣的問題,那麼可能是JDK沒匯入正確。
2,try…catch 後面得程式碼依舊會執行。
- 情況1
public static void main(String[] args) {
try {
while (true){
try{
System.out.println("正常執行");
int i = 1/0;
}catch (Exception e){
System.out.println("異常捕獲了");
//return; (1)
throw new RuntimeException();//(2)
}
/**
當(1)或者(2)執行的時候,下面的語句都不會執行,只有(1),(2)都不執行的時候才有下面的列印
*/
System.out.print("第一部分結尾部分" );
}
}catch (Exception e){
System.out.println("上層異常捕獲了");
}
finally {
System.out.print("結束了");
}
/**
當(1)執行的時候,下面的語句不會執行,當(2)執行的時候,下面的語句會走
*/
System.out.print("第二部分結尾部分");
}
}
-情況2
public static void main(String[] args) {
try {
while (true){
try{
System.out.println("正常執行");
int i = 1/0;
}catch (Exception e){
System.out.println("異常捕獲了");
}
}
}catch (Exception e){
System.out.println("上層異常捕獲了");
}
finally {
System.out.print("結束了");
}
}
執行結果:
正常執行
異常捕獲了
正常執行
異常捕獲了
3,idea專案轉eclipse專案的時候會有資源目錄的指向的不同。
如:WebContent —》webapp的轉換。
解決方法:
1,找到專案所在路徑,在settings目錄中找到org.eclipse.wst.common.component 這個檔案,然後修改該行程式碼處source-path的值就行了。
<wb-module deploy-name="TopCcms">
<wb-resource deploy-path="/" source-path="/webapp" tag="defaultRootSource"/>
.........
4, 修改專案的web訪問根目錄的方式有:
方式一:直接通過開發工具修改,這裡以Eclipse為例。在Eclipse中選擇專案,然後點選“project”,選擇properties選項,在配置視窗選擇”Web Project Settings“選項,最後修改想要的名稱即可。
方式二:通過Tomcat設定,這裡比較侷限,因為本人還沒有用過其他容器。在tomcat根目錄下開啟conf資料夾,然後編輯server.xml. 找到
<Context path="/webrootName" docBase="realPath" ></Context>
這裡只用到path,docBase兩個屬性。分表表示web應用根目錄和專案所在檔案路徑。
修改完成後,重啟tomcat服務,直接訪問http://localhost:8080/webrootName 即能訪問部署的專案。
注:這裡http://localhost:8080/只是測試案例,需要按照各自環境變化。
5, 替換字串中轉移字元的方法
方式一:
String str = "ssss\r\ndddd\tdddd\n\r";
String field = EntityUtils.toString(str,"UTF-8");//獲取資料
field=field.replaceAll("[\\t\\n\\r]", "");//將內容區域的回車換行製表符去除
說明:String類的replaceAll就有正則替換功能,即引數一可以是正則表示式。 \t為製表符 \n為換行 \r為回車
方式二:
String str = "ssss\r\ndddd\tdddd\n\r";
Pattern p = Pattern.compile("\\s*|\t|\r|\n"); //空格,製表符,回車,換行
Matcher m = p.matcher(str);
str = m.replaceAll("");
方式三:(笨方法)
String str = "ssss\r\ndddd\tdddd\n\r";
1.去除空格:s = s.replace(”\\s“,“”); //單字元,
2.去除回車:s = s.replace(“\n”,“”);
這樣也可以把空格和回車去掉,其他也可以照這樣做。
注:\n 回車(\u000a)
\t 水平製表符(\u0009)
\s 空格(\u0008)
PS:這裡replace方法中必須用字串的方式,而不是字元的方式。
6.時間戳:
時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的“總秒數”。
7,對於String型別的變數,方法中對應值傳遞
public static void main(String[] args) {
String str = "abc";
changeStr(str);
System.out.println("main: "+str);
}
public static void changeStr(String str){
str +="123";
System.out.println(str);
}
結果:
abc123
main: abc
8,
public static void main(String[] args) {
String a = "Programming";
String b = new String("Programming");
String c = "Program" + "ming";
System.out.println(a == b);
System.out.println(a == c);
System.out.println(a.equals(b));
System.out.println(a.equals(c));
System.out.println(a.intern() == b.intern());
}
結果:
false
true
true
true
true
class A{
static{
System.out.print("1");
}
public A(){
System.out.print("2");
}
}
class B extends A{
static{
System.out.print("a");
}
public B(){
System.out.print("b");
}
}
//何問起 hovertree.com
public class Hello{
public static void main(String[] args){
A ab = new B();
ab = new B();
}
}
結果:
1a2b2b
因為:
建立物件時構造器的呼叫順序是:先初始化父類的靜態成員然後初始化當前類的靜態成員(包括靜態程式碼塊,呼叫一次),然後初始化父類的成員,然後呼叫父類構造器,最後初始化自身的成員,然後再呼叫自身構造器。