Java基礎語法
1.注釋
注釋不會被執行,是用來給寫代碼的人看的,
1.1單行注釋
單行注釋只能注釋一行文字
// 注釋
1.2多行注釋
多行注釋可以注釋多行文字
/* 注釋
注釋
注釋
*/
1.3檔案注釋
JavaDoc:檔案注釋
例
/**
* @Description HelloWrold
* @Author liyuelian
*/
2.識別符號和關鍵字
Java所有的組成部分都需要名字,類名、變數名以及方法名都被稱為識別符號,
2.1關鍵字
1)48個關鍵字:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while
2)2個保留字(現在沒用以后可能用到作為關鍵字):goto、const
3)3個特殊直接量:true、false、null
2.2識別符號注意點
-
所有的識別符號都要以字母(A-Z或者a-z)、美元符($)、或者下劃線(_)開始;
-
首字符之后可以是字母(A-Z或者a-z)、美元符($)、下劃線(_)或者數字的四種字符任何組合;
-
不能使用關鍵字作為變數名或者方法名;
-
識別符號大小寫敏感;
-
可以使用中文命名,但是不建議使用;

3.資料型別
強型別語言:(C、C++、Java等)
要求變數的使用嚴格符合規定,所有變數必須先定義之后才能使用,
弱型別語言:(VB、JS等)
可以先使用后定義,
Java的資料型別分為兩大類:
-
1. 基本資料型別
-
2. 參考資料型別
類、介面、陣列....
3.1基本資料型別
基本資料型別(primitive Type)包括四大類八小種
1、整數型
byte
short
int
long
2、浮點型
float
double
3、布爾型
boolean
4、字符型
char
字串String屬于參考類,不是關鍵字
3.2參考資料型別
Reference Type
-
類
-
介面
-
陣列
3.2什么是位元組?
-
位(bit):是計算機內部資料存盤的最小單位,1bit表示一位,如1011 0010是一個八位二進制數,
-
位元組(byte):是計算機中資料處理的基本單位,習慣上用大寫B來表示,
-
1B(byte,位元組)=8b(bit,位)
-
字符:是指計算機中使用的字母、數字、字和符號,
4.資料型別拓展以及面試題講解
4.1整數拓展
進制:二進制(0b)、八進制(0)、十進制、十六進制(0x)
public class Hello {
public static void main(String[] args) {
int i=0b10;//二進制0b
int i1=10;
int i2=010;//八進制0
int i3=0x10;//十六進制0x
System.out.println(i);
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
}
}
運行結果:
?
2
10
8
16
Process finished with exit code 0
4.2浮點數拓展
例子1 銀行業務怎么表示錢
public class Hello {
public static void main(String[] args) {
//浮點數拓展? 銀行怎么表示 錢
//例子1
float f = 0.1f;//0.1
double d=1.0/10;//0.1
System.out.println(f==d);//false
?
float d1=292929292828282f;
float d2=d1+1;
System.out.println(d1==d2);//true
}
}
運行結果:
false
true
原因:浮點數的位數是有限的,離散的,但是某些運算的結果可能會有無限位小數,浮點數一般會存在舍入誤差,接近但不等于實際數值,因此最好完全避免使用浮點數進行比較,
那么銀行業務怎么表示錢?
答案是使用數學工具類BigDecimal
4.3字符拓展
public class Hello {
public static void main(String[] args) {
char c1='a';
char c2='中';
?
System.out.println(c1);
System.out.println((int)c1);//強制轉換
?
System.out.println(c2);
System.out.println((int)c2);//強制轉換
}
}
運行結果:
a
97
中
20013
原因:所有的字符本質還是數字--->涉及到編碼問題 Unicode
unicode 表:
97 代表 a
65 代表 A
Unicode編碼范圍從U0000~UFFFF(0~65535)
轉義字符
轉義字符(Escape character),所有的ASCII碼都可以用“\”加數字(一般是8進制數字)來表示,而C中定義了一些字母前加""來表示常見的那些不能顯示的ASCII字符,如\0,\t,\n等,就稱為轉義字符,因為后面的字符,都不是它本來的ASCII字符意思了,簡單來說就是在一些字符前加 “\” 使它具有其他意義,
4.4布林值拓展
public class Hello {
public static void main(String[] args) {
boolean flag=true;
if(flag==true){}
if(flag){}//與上一行功能一致,默認為true
}
}
5.型別轉換
八種資料型別占用空間大小:
| 型別描述 | 基本資料型別 | 占用空間大小[位元組] | 取值范圍 | 默認值 |
|---|---|---|---|---|
| 位元組型 | byte | 1 | -128~127 | 0 |
| 短整型 | short | 2 | -32768~32768 | 0 |
| 整型 | int | 4 | -2^31~2^31-1 | 0 |
| 長整型 | long | 8 | -2^63~2^63-1 | 0 |
| 單精度浮點型 | float | 4 | 3.4e-45~1.4e38 | 0.0f |
| 雙精度浮點型 | double | 8 | 4.9e-324~1.8e308 | 0.0d |
| 字符型 | char | 2 | 0~65535 | '\u0000' |
| 布爾型 | boolean | 1 | true/false | false |
*關于默認值:成員變數沒有手動賦值,系統會默認賦值,區域變數則不會,八種數字型別的默認值是一切向0看齊,
由于Java是強型別語言,所以進行有些運算時需要用到型別轉換
低 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > 高
byte < short / char < int < long < float < double
小數優先,因此雖然float的位元組數比long小,但long轉換成float仍是自動型別轉換,
運算中,不同型別的資料先轉化為同一型別,然后進行運算,
5.1強制型別轉換
大容量轉換成小容量,叫做強制型別轉換(高—>低)
例子
public class Hello {
public static void main(String[] args) {
int i=128;
byte b=(byte)128;//記憶體溢位
//強制轉換 (型別)變數名
System.out.println(i);
System.out.println(b);
}
}
運行結果:
128
-128
5.2自動型別轉換
小容量向大容量轉換,稱為自動型別轉換(低—>高)
例子
public class Hello {
public static void main(String[] args) {
int i=128;
double b=i;
?
//強制轉換 (型別)變數名
System.out.println(i);
System.out.println(b);
}
}
運行結果:
128
128.0
int轉成long型別,由低到高,因此會自動轉換,
注意點:
-
不能對布爾型別進行轉換
-
不能把物件型別轉換為不相干的型別
-
再把高容量轉換成低容量時需要強制轉換
-
轉換時可能存在記憶體溢位或者精度問題
例
public class Hello {
public static void main(String[] args) {
System.out.println((int)23.7);//23,默認向0取整
System.out.println((int)-45.89f);//-45,默認向0取整
}
}
public class Hello {
public static void main(String[] args) {
char c='a';
int d=c+1;
System.out.println(d);//98,自動轉換
System.out.println((char)d);//b,強制轉換
}
}
public class Hello {
public static void main(String[] args) {
//操作比較大的數時,注意溢位問題
//JDK7新特性,數字之間可以用下劃線分割
int money =10_0000_0000;
System.out.println(money);//輸出為1000000000
?
int years=20;
int total=money*years;
System.out.println(total);//-1474836480,溢位
?
long total2=money*years;//-1474836480
//在賦值給total2之前,由于money和years都是int型,
// 那么相乘所得的結果也是int型別,已經出現溢位問題,
// 因此賦值之前的值已經為-1474836480,所以這里的結果也是-1474836480
?
long total3=money*(long)years;//先把一個數轉換為long
System.out.println(total3);//結果是 20000000000
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/500103.html
標籤:其他
上一篇:Kafka學習(五) 訊息磁區
