java基礎-01
阿新 • • 發佈:2022-12-03
一、Hello,world
首先建立java檔案,檔名字為 Hello.java,程式碼如下。然後使用javac編譯 Hello.java 。當編譯完成之後,生成一個Hello.class 。這個時候 java Hello.java
public class Hello{
public static void main (String[] args){
System.out.print("Hello,World!");
}
}
二、java執行機制
解釋型 | 編譯型 |
---|---|
一邊執行編譯 | c c++ 這種需要將整個程式碼執行前後編譯一遍的語言 |
java屬於先編譯,後解釋
三、java基礎語法
新建空 專案
新建空模組
新建 檔案--專案結構--SDK選擇和jdk版本相同的,語言級別選擇8
新建類
執行
1)註釋
修改註釋配色方案
// 單行註釋
/**javadoc:文件註釋 */
/* 多行註釋*/
識別符號
1、所有的識別符號都應該以字母(A-Z 或者 a-z),美元符 $ ,或者下劃線 (_)開始
2、不可以使用關鍵字作為變數名
3、識別符號是大小寫敏感的
資料型別
弱型別語言 | 強型別語言 |
---|---|
弱型別語言是一種弱型別定義的語言,某一個變數被定義型別,該變數可以根據環境變化自動進行轉換,不需要經過顯性強制轉換 vb 、PHP、javascript | 一旦某一個變數被定義型別,如果不經過強制轉換,則它永遠就是該資料型別了 Java、.net 、Python、C++ |
除了基礎的8個型別,剩下的都是引用型別 例如string
整數 | 浮點數 | 字元/字串 | 布林 |
---|---|---|---|
int 4位元組 | float 4位元組 | char 2位元組 | boolean 1位 |
byte 1位元組 | double 8位元組 | ||
shrot 2位元組 | |||
long 8位元組 |
型別擴充套件
int
整數拓展 進位制 二進位制0b開頭 十進位制 八進位制0開頭 十六進位制0x開頭
public class Demo04 { public static void main(String[] args) { //整數拓展 進位制 二進位制0b開頭 十進位制 八進位制0開頭 十六進位制0x開頭 //八進位制逢八進一 // int i = 10; int ia = 010; //八進一 int ib = 0x10; //十六進一 System.out.println(i); System.out.println(ia); System.out.println(ib); } }
flort對比
//浮點數
//最好完全使用浮點數進行比較
//最好完全使用浮點數進行比較
float a = 0.1f;
double b = 0.1;
System.out.println(a==b); //對比輸出fales
//===============================================
//===============================================
float c = 123123123;
float d = 1 + c;
System.out.println(c==d); //對比輸出ture
}
}
char轉換數字
//===============================================
//char轉換數字
//===============================================
char c1 = 'a';
char c2 = 'b';
System.out.println(c1);
System.out.println((int)c1);
System.out.println((int)c2);
char c3 = '\u0061';
System.out.println(c3);
}
}
型別轉換
低位轉高位自動轉換
高位轉地位強制轉換
浮點數和複數轉化的精度問題
溢位問題
public class Demo06 {
public static void main(String[] args) {
int money = 10_0000_0000;
int year = 20;
int total = money*year;
System.out.println(total); //計算的時候溢位了
long total1 = money*year;
System.out.println(total1); //我們發現 使用long型別計算的時候,也是整數溢位
System.out.println("=============================================");
long total3 = money*((long)year); //再計算前對year進行轉化則不會溢位
System.out.println(total3);
}
}
變數
1、變數必須宣告型別 型別可以是基本型別,也可以是引用型別
2、變數名必須是合法的識別符號
3、變數宣告是一條完整的語句,因此每一個生命都必須以分號結束
1)、類變數 :從屬於類,隨著類一起生成和消失
2)、例項變數 :從屬於物件,數值型變數的預設值是0(或者0.0),布林型變數的預設值是false,引用型別變數的預設值是null
3)、區域性變數 :兩個{}之間的,使用之前必須宣告和初始化值
常量
初始化之後不能改變的值,一個特殊的變數值被設定之後不允許改變,修飾符不區分先後順序 public
final 常量名=值;
final double PI=3.14
運算子 +
正常使用a/b的時候因為兩個都是int型,所以得出的結果0.5也為int型結果被捨去為0,所以這裡我們應該使用double進行強轉才可以輸出0.5
package operator;
public class Demo01 {
public static void main(String[] args) {
//二元運算子
int a = 10;
int b = 20;
int c = 30;
int d = 40;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);
}
}
相加的時候自動由低位向高位轉換
有long向long轉化
有double向double轉化
int不能轉換成double
public class Demo2{
public static void main{
long a = 123123123123L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d); //long
System.out.println(b+c+d); //int
System.out.println((double)c+d); //double
System.out.println(c+d); //int
System.out.println((double)c +d); //double
}
}
運算子boolen
public class Demo03 {
public static void main(String[] args) {
//boolen
int a = 1;
int b = 2 ;
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
}
}
false
true
false
true
自增
a++先賦值再自增 a = a+1
++a先自增再賦值
package operator;
public class Demo04 {
public static void main(String[] args) {
// ++ -- 自增 自減
int a =3;
int b = a++; //執行完這行程式碼後,先給b賦值,再自增
int c = ++a; //執行完這行程式碼前,先自增,再給b賦值
System.out.println(a);
// a = a+1
System.out.println(b);
System.out.println(c);
double pow = Math.pow(3, 2); //很多運算我們會使工具類來做
System.out.println(pow);
}
}
5
3
5
9.0
邏輯運算子 與(and) 或 (or) 非 (取反)
public class Demo05 {
public static void main(String[] args) {
//邏輯運算 與(and) 或 (or) 非 (取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a&&b)); //兩個有一個為假則為假
System.out.println("a || b :"+(a||b)); //兩個又一個為真則廢真
System.out.println("! (a && b) "+ !(a&&b)); // 如果是真變為假 如果是假變為真
//短路運算 &&的時候如果遇到fales則不執行&&後面的。
int c = 5; //此時c = 5
boolean e = ((c<4)&&(c++<4)); //首先判斷第一個條件c>4為fales,這時候將不會執行後面的先賦值再自增
System.out.println(e); //如果程式執行到了c++<4 ,c將會變為6,而且將輸出fales
System.out.println(c);
}
}
a && b:false
a || b :true
! (a && b) true
false
5
位運算
//二進位制逢二進一 ,是一種加快運算方法的運算,只需要記住左移右移
public class Demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
---------------------------------------
A&B 0000 1100 如果上下都為1的話才是1
A|B 0011 1101 如果都是0則為0 如果有一個1則為1
A|^B0011 0001 相同為0 不同為1
~B 1111 0010 與B完全相反
<< >> 左移右移動
<< *2
>> /2
效率及高
*/
System.out.println(2<<3); //2*2*2*2
}
}
16
條件運算子 字串連線
public class Demo07 {
public static void main(String[] args) {
//條件運算子
int a = 10;
int b = 20;
a+=b; // a = a+b
a-=b; // a = a-b
System.out.println(a);
System.out.println(b);
//字串連線符 如果+左邊有string型別,則將其他操作都轉化程string型別
System.out.println(""+a+b); //首先當成了字串判斷所以int轉化成了string進行相加
System.out.println(a+b+""); //因為string在右側先進行a+b運算所以輸出的結果為int相加
}
}
10
20
1020
30
三元運算子
public class Demo08 {
public static void main(String[] args) {
//x?y:z 如果x==true,則結果為y,否則結果為z
int score = 80 ;
String type = score<50? "及格":"不及格";
System.out.println(type);
}
}
不及格