尚矽谷Java基礎——學習程式碼和筆記_day02

Refrain09_23 發表於 2020-11-27
/*
計算機中不同進位制的使用說明

對於整數,有四種表示方式:
> 二進位制(binary):0,1 ,滿2進1.以0b或0B開頭。
> 十進位制(decimal):0-9 ,滿10進1。
> 八進位制(octal):0-7 ,滿8進1. 以數字0開頭表示。
> 十六進位制(hex):0-9及A-F,滿16進1. 以0x或0X開頭表示。此處的A-F不區分大小寫。
    如:0x21AF +1= 0X21B0



*/
class BinaryTest {
	public static void main(String[] args) {
		
		int num1 = 0b110;
		int num2 = 110;
		int num3 = 0127;
		int num4 = 0x110A;

		System.out.println("num1 = " + num1);
		System.out.println("num2 = " + num2);
		System.out.println("num3 = " + num3);
		System.out.println("num4 = " + num4);

	}
}
/*
String型別變數的使用
1. String屬於引用資料型別,翻譯為:字串
2. 宣告String型別變數時,使用一對""
3. String可以和8種基本資料型別變數做運算,且運算只能是連線運算:+
4. 運算的結果仍然是String型別

*/
class StringTest {
	public static void main(String[] args) {
		
		String s1 = "Hello World!";

		System.out.println(s1);

		String s2 = "a";
		String s3 = "";

		//char c = '';//編譯不通過

		//***********************
		int number = 1001;
		String numberStr = "學號:";
		String info = numberStr + number;// +:連線運算
		boolean b1 = true;
		String info1 = info + b1;// +:連線運算
		System.out.println(info1);

		//***********************
		//練習1
		char c = 'a';//97   A:65
		int num = 10;
		String str = "hello";
		System.out.println(c + num + str);//107hello
		System.out.println(c + str + num);//ahello10
		System.out.println(c + (num + str));//a10hello
		System.out.println((c + num) + str);//107hello
		System.out.println(str + num + c);//hello10a

		//練習2
		//*	*
		System.out.println("*	*");
		System.out.println('*' + '\t' + '*');
		System.out.println('*' + "\t" + '*');
		System.out.println('*' + '\t' + "*");
		System.out.println('*' + ('\t' + "*"));


		//***********************

		//String str1 = 123;//編譯不通過
		String str1 = 123 + "";
		System.out.println(str1);//"123"
		
		//int num1 = str1;
		//int num1 = (int)str1;//"123"

		int num1 = Integer.parseInt(str1);
		System.out.println(num1);//123
	}
}

/*
基本資料型別之間的運算規則:

前提:這裡討論只是7種基本資料型別變數間的運算。不包含boolean型別的。

1. 自動型別提升:
    結論:當容量小的資料型別的變數與容量大的資料型別的變數做運算時,結果自動提升為容量大的資料型別。
	byte 、char 、short --> int --> long --> float --> double 

	特別的:當byte、char、short三種型別的變數做運算時,結果為int型
	
2. 強制型別轉換:見VariableTest3.java


說明:此時的容量大小指的是,表示數的範圍的大和小。比如:float容量要大於long的容量
*/
class VariableTest2 {
	public static void main(String[] args) {
		
		byte b1 = 2;
		int i1 = 129;
		//編譯不通過
		//byte b2 = b1 + i1;
		int i2 = b1 + i1;
		long l1 = b1 + i1;
		System.out.println(i2);

		float f = b1 + i1;
		System.out.println(f);

		short s1 = 123;
		double d1 = s1;
		System.out.println(d1);//123.0

		//***************特別地*********************
		char c1 = 'a';//97
		int i3 = 10;
		int i4 = c1 + i3;
		System.out.println(i4);

		short s2 = 10;
		//char c2  = c1 + s2;//編譯不通過

		byte b2 = 10;
		//char c3 = c1 + b2;//編譯不通過

		//short s3 = b2 + s2;//編譯不通過

		//short s4 = b1 + b2;//編譯不通過
		//****************************************

	}
}
/*
強制型別轉換:自動型別提升運算的逆運算。
1.需要使用強轉符:()
2.注意點:強制型別轉換,可能導致精度損失。



*/
class VariableTest3 {
	public static void main(String[] args) {
		
		double d1 = 12.9;
		//精度損失舉例1
		int i1 = (int)d1;//截斷操作
		System.out.println(i1);
		
		//沒有精度損失
		long l1 = 123;
		short s2 = (short)l1;
		
		//精度損失舉例2
		int i2 = 128;
		byte b = (byte)i2;
		System.out.println(b);//-128

	}
}
class VariableTest4 {
	public static void main(String[] args) {
		
		//1.編碼情況1:
		long l = 123213;
		System.out.println(l);
		//編譯失敗:過大的整數
		//long l1 = 21332423235234123;
		long l1 = 21332423235234123L;


		//****************
		//編譯失敗
		//float f1 = 12.3;
		float f1 = (float)12.3;
		//2.編碼情況2:
		//整型常量,預設型別為int型
		//浮點型常量,預設型別為double型
		byte b = 12;
		//byte b1 = b + 1;//編譯失敗

		//float f1 = b + 12.3;//編譯失敗
		
	}
}
/*
Java定義的資料型別

一、變數按照資料型別來分:

	基本資料型別:
		整型:byte \ short \ int \ long
		浮點型:float \ double
		字元型:char
		布林型:boolean


	引用資料型別:
		類(class)
		介面(interface)
		陣列(array)


二、變數在類中宣告的位置:
		成員變數  vs  區域性變數
*/
class VariableTest1 {
	public static void main(String[] args) {
		//1. 整型:byte(1位元組=8bit) \ short(2位元組) \ int(4位元組) \ long(8位元組)
		//① byte範圍:-128 ~ 127
		//
		byte b1 = 12;
		byte b2 = -128;
		//b2 = 128;//編譯不通過
		System.out.println(b1);
		System.out.println(b2);
		// ② 宣告long型變數,必須以"l"或"L"結尾
		// ③ 通常,定義整型變數時,使用int型。
		short s1 = 128;
		int i1 = 1234;
		long l1 = 3414234324L;
		System.out.println(l1);

		//2. 浮點型:float(4位元組) \ double(8位元組)
		//① 浮點型,表示帶小數點的數值
		//② float表示數值的範圍比long還大

		double d1 = 123.3;
		System.out.println(d1 + 1);
		//③ 定義float型別變數時,變數要以"f"或"F"結尾
		float f1 = 12.3F;
		System.out.println(f1);
		//④ 通常,定義浮點型變數時,使用double型。

		//3. 字元型:char (1字元=2位元組)
		//① 定義char型變數,通常使用一對'',內部只能寫一個字元
		char c1 = 'a';
		//編譯不通過
		//c1 = 'AB';
		System.out.println(c1);

		char c2 = '1';
		char c3 = '中';
		char c4 = 'ス';
		System.out.println(c2);
		System.out.println(c3);
		System.out.println(c4);

		//② 表示方式:1.宣告一個字元 2.轉義字元 3.直接使用 Unicode 值來表示字元型常量
		char c5 = '\n';//換行符
		c5 = '\t';//製表符
		System.out.print("hello" + c5);
		System.out.println("world");

		char c6 = '\u0043';
		System.out.println(c6);

		//4.布林型:boolean
		//① 只能取兩個值之一:true 、 false
		//② 常常在條件判斷、迴圈結構中使用
		boolean bb1 = true;
		System.out.println(bb1);

		boolean isMarried = true;
		if(isMarried){
			System.out.println("你就不能參加\"單身\"party了!\\n很遺憾");
		}else{
			System.out.println("你可以多談談女朋友!");
		}

	}
}
/*
變數的使用
1. java定義變數的格式:資料型別 變數名 = 變數值;

2. 說明:
   ① 變數必須先宣告,後使用
   ② 變數都定義在其作用域內。在作用域內,它是有效的。換句話說,出了作用域,就失效了
   ③ 同一個作用域內,不可以宣告兩個同名的變數

*/
class VariableTest {
	public static void main(String[] args) {
		//變數的定義
		int myAge = 12;
		//變數的使用
		System.out.println(myAge);
		
		//編譯錯誤:使用myNumber之前並未定義過myNumber
		//System.out.println(myNumber);

		//變數的宣告
		int myNumber;
		
		//編譯錯誤:使用myNumber之前並未賦值過myNumber
		//System.out.println(myNumber);

		//變數的賦值
		myNumber = 1001;
		//編譯不通過
		//System.out.println(myClass);

		//不可以在同一個作用域內定義同名的變數
		//int myAge = 22;
		
	}

	public void method(){
		int myClass = 1;
	}
}

//class VariableTest {}//逆向思維,反證法
/*
識別符號的使用
1.識別符號:凡是自己可以起名字的地方都叫識別符號。
   比如:類名、變數名、方法名、介面名、包名...

2.識別符號的命名規則:--> 如果不遵守如下的規則,編譯不通過!需要大家嚴格遵守

> 由26個英文字母大小寫,0-9 ,_或 $ 組成  
> 數字不可以開頭。
> 不可以使用關鍵字和保留字,但能包含關鍵字和保留字。
> Java中嚴格區分大小寫,長度無限制。
> 識別符號不能包含空格。

3. Java中的名稱命名規範: --->如果不遵守如下的規範,編譯可以通過!建議大家遵守

包名:多單片語成時所有字母都小寫:xxxyyyzzz
類名、介面名:多單片語成時,所有單詞的首字母大寫:XxxYyyZzz
變數名、方法名:多單片語成時,第一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫:xxxYyyZzz
常量名:所有字母都大寫。多單詞時每個單詞用下劃線連線:XXX_YYY_ZZZ

4.
注意1:在起名字時,為了提高閱讀性,要儘量有意義,“見名知意”。
注意2:java採用unicode字符集,因此識別符號也可以使用漢字宣告,但是不建議使用。 


*/
class IdentifierTest{

	public static void main(String[] args){
		
		//int myNumber = 1001;
		//System.out.println(myNumber);
		int mynumber = 1002;
		System.out.println(mynumber);

		//int 學號 = 1003;
		//System.out.println(學號);
		
	
	}


}

class Hello1_${

}
//class 1Hello{
//}
class staticpublic{
}
class Static{
}

class User{
}

class Account{
}