JAVA -01
前期準備
介紹
- 1972年C誕生【兩大問題:指標;記憶體管理】
- 1982年C++誕生【面向物件;兼容C;圖形領域和游戲,但是更復雜】
- 1995年JAVA誕生【沒有指標沒有記憶體管理;面向物件;型別安全;高質量類別庫;跨平臺(JVM實作);applet圖形界面程式】
小碎點
- 三高問題:高可用、高性能、高并發
Java特性
- 簡單性【易學】
- 面向物件
- 可移植性【一次撰寫多次運行】
- 高性能【及時編譯】
- 分布式【TCP/IP處理、URL呼叫、遠程呼叫】
- 動態性【反射機制】
- 多執行緒【互動、實時】
- 安全性【防病毒、防篡改、例外機制】
- 健壯性
- 既是編譯型又是解釋型語言
11. 大小寫敏感
Java的三大版本
- JavaSE:標準版(桌面程式、控制臺開發)
- JavaME:嵌入式開發(手機、小家電)
- JavaEE: 企業級開發(web端、服務器開發)
JDK、JRE、JVM
1. JDK:Java Development Kit 【Java開發包】
2. JRE:Java Runtime Environment 【Java運行時環境】
3. JVM:Java Virtual Machine 【Java虛擬機】
JDK7和JDK8之間的區別
JDK7
- JDK7新特性,數字之間可以用下劃線分割
JDK8
JDK卸載
- 洗掉安裝目錄
- 洗掉環境變數配置JAVA_HOME
- 洗掉path下的關于java的目錄
- java -version檢查
JDK安裝
- 百度搜索jdk8,找到下載地址
- 同意協議、下載對應版本安裝包
- 雙擊安裝
- 安裝目錄建議找易找到的,并記住安裝路徑
- 配置環境變數
- 我的電腦 --->右鍵 --->屬性 --->高級系統設定
- 環境變數 --->系統變數 --->新建系統變數--->JAVA_HOME--->安裝路徑
- 配置path變數
- 系統變數里面找到path --->新建%JAVA_HOME%\bin --->新建%JAVA_HOME%\jre\bin
- 打開cmd ---> java -version 檢查,出現安裝的版本及成功
控制臺輸出HelloWorld【第一個java程式】
-
新建一個檔案【檔案名HelloWorld檔案名和檔案里的class后面的要一致】,將后綴改為.java
-
在里面撰寫代碼
-
public class HelloWorld{ //HelloWorld與檔案名一致 public static void main(String[] args){ System.out.println("Hello,World!"); } } -
控制臺進到檔案目錄,進行編譯
-
javac HelloWorld.java -
運行
-
java HelloWorld -

使用IDEA開發
-
下載安裝包,安裝
-
安裝時需要根據電腦版本選擇是 “.32” 還是 “.64” ,還有勾選 ".java" ,
-
破解
使用IDEA快捷鍵
1、psvm + enter 可以快速補充
public static void main(String[] args) {
}
2、sout + enter 可以快速補充
System.out.println();
3、Ctrl + d 復制當前行到下一行
Java基礎語法
注釋
1、//單行注釋 //
2、//多行注釋 /* 注釋 */
3、//JavaDOC /** 檔案注釋 */
識別符號【關鍵字】
1、所有識別符號首字母必須以字母(A-Z,a-z),美元符號($),下劃線(—)開始
2、首字母之后可以任意
3、大小寫敏感
4、不能使用關鍵字作為變數名和方法名
5、String不是關鍵字,是一個類
資料型別
1、java是強型別語言【變數使用復合型別且必須先定義再使用】
2、兩大類【基本型別、參考型別】
3、primitive type 基本型別 【byte(1B)、short(2B)、int(4B)、long(8B)、float(4B)、double(8B)、char(2B)、boolean(1b)】【long型別要在后面加上L,float要在后面加F】
4、reference type 參考型別 【類、介面、陣列】
public class Demo01 {
public static void main(String[] args) {
//====================================================
//int型 【int(4B)】
//====================================================
int i = 10;
int i2 = 010; //八進制0
int i3 = 0x10; //十六進制 0x
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println("====================");
//====================================================
//float型 && double型 【float(4B)、double(8B)】
//====================================================
float f = 0.1f;
double d = 1.0/10;
System.out.println(f);
System.out.println(d);
System.out.println(f==d);
System.out.println("====================");
//====================================================
//浮點數拓展? 銀行業務怎么表示?錢
//BigDecimal 數學工具類
//====================================================
//float 有限 離散 舍入誤差 大約 接近但不等于
//最好完全避免使用浮點數標記!!!
//最好完全避免使用浮點數標記!!!
//最好完全避免使用浮點數標記!!!
float d1 = 23169541465661f;
float d2 = d1 + 1 ;
System.out.println(d1==d2);
System.out.println(d1);
System.out.println(d2);
System.out.println("====================");
//====================================================
//char型 【char(2B)】
//字符拓展?
//所有字符本質還是數字 編碼 Unicode 2位元組 0-65536 Excel 2^16 = 65536
//====================================================
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1);
System.out.println(c2);
System.out.println((int)c2);
System.out.println("====================");
//轉義字符
// \t 制表符 tab
// \n 換行
System.out.println("hello\thello");
System.out.println("hello\nhello");
System.out.println("====================");
//====================================================
//boolea型 【boolean(1b)】
//====================================================
boolean flag = false;
if(flag == true){ } //新手
if(flag){} //老手
//上面兩個if判斷功能一致
//====================================================
//String 不是資料型別,它是一個類!!!!!!
//====================================================
String s1 = new String("nihao");
String s2 = new String("nihao");
String s3 = "nihao";
String s4 = "nihao";
System.out.println(s1==s2);
System.out.println(s3==s4);
System.out.println("====================");
}
}
自己找找看有哪些轉義符?
位
- 位(bit):計算機內部最小存盤單位
- 位元組(byte):計算資料處理基本單位,習慣B表示
- 1B = 8bit
型別轉換
注意點:
1、不能對boolean型別進行轉換
2、不能將最想型別轉換為不相干的型別
3、轉換的時候可能存在記憶體溢位、或者精度問題
強制轉換 高到低 (型別)變數名
低--->高:byte , short , char , int ,long , float , double
自動型別轉換 低到高【不需要處理】
package base;
public class Demo02 {
public static void main(String[] args) {
//強制轉換 高到低 (型別)變數名
//自動型別轉換 低到高
int i = 128;
byte b = (byte)i; //記憶體溢位
double d = i;
System.out.println(i);
System.out.println(b);
System.out.println(d);
System.out.println("===============================");
System.out.println((int)23.7);
System.out.println((int)-45.75f);
System.out.println("===============================");
char c = 'a';
int i2 = c+1;
System.out.println(i2);
System.out.println((char)i2);
System.out.println("===============================");
//操作比較大的數,注意溢位
//JDK7新特性,數字之間可以用下劃線分割
int money = 10_0000_0000;
int years = 20;
int total = money*years; //負數,計算溢位
long total2 = money*years; //負數,計算之后轉換為long型別,同樣會溢位
long total3 = money*((long)years); //先將years強轉為long,再計算
System.out.println(total);
System.out.println(total2);
System.out.println(total3);
/*
小寫的L(即l)也可以,但是在撰寫軟體里,他和1非常相似,為避免認錯,代碼規范易讀都用L來標記long型別
*/
}
}
變數、常量、作用域
注意點:
1、每個變數都要有型別
2、變數名必須是合法的識別符號
3、變數生命是一條完整的陳述句,所以必須以分號結束
4、不建議一行定義多個變數
- 類變數:加了static關鍵字
- 實體變數:從屬于物件,在類中有效,可以不初始化就使用,會有默認值【boolean默認false ,除了基本型別其余的是null】
- 區域變數:使用之前必須實體化并賦值,作用域只在它宣告的方法內部有用(即它所在的{}內有用)
package base;
public class Demo03 {
//變數 type varName [=value][{varName[=value]}];
//常量一般用大寫 final
static double salary = 2500;
String name;
int age;
//修飾符不存在先后順序
static final double PI = 3.14;
public static void main(String[] args) {
int i = 10;
System.out.println(i);
Demo03 demo = new Demo03();
System.out.println(demo.name);
System.out.println(demo.age);
System.out.println(salary);
System.out.println(PI);
}
//外部方法
public void add(){
//***
}
}
運算子
算數運算子:+ - * / %(取余/模) ++(自增,一元運算子) --(自減,一元運算子)
賦值運算子:=
關系運算子:> < >= <= == != instanceof
邏輯運算子:&& || !
位運算子:& | ^ ~ >> << >>>(了解!!!)
條件運算子:? :
擴展賦值運算子:+= -= *= /=
package base;
public class Demo04 {
public static void main(String[] args) {
//二元運算子
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);
System.out.println("================================");
long aa = 123123123123L;
int bb = 123;
short cc = 10;
byte dd = 8;
System.out.println(aa+bb+cc+dd); //long 最高
System.out.println(bb+cc+dd); //int
System.out.println(cc+dd); //int
System.out.println("================================");
//關系運算子回傳結果 true false
int a2 = 10;
int b2 = 20;
int c2 = 21;
System.out.println(a2>b2);
System.out.println(a2<b2);
System.out.println(a2==b2);
System.out.println(a2!=b2);
System.out.println(c2%b2);
System.out.println("================================");
//一元運算子 ++ --
int x = 1; //x=1
int y = x++; //y=1,x=2【先將x賦給y,在x+1】
System.out.println(x); //x=2
int z = ++x; //x=3【先x+1,再將x賦給z】
System.out.println(x);
System.out.println(y);
System.out.println(z);
System.out.println("================================");
//冪運算 2^3 = 8 很多運算,需要使用工具類
double m = Math.pow(2,3);
System.out.println(m);
System.out.println("================================");
//邏輯運算子
boolean f1 = true;
boolean f2 = false;
System.out.println(f1&&f2);
System.out.println(f1||f2);
System.out.println(!(f1&&f2));
System.out.println("================================");
擴展賦值運算子
int xy = 10;
int xz = 20;
a+=b; //a=a+b
a-=b; //a=a-b
System.out.println(a+b);
//三元運算子
//xx ? yy : zz 如果xx為真則結果為yy,否則結果為zz
int score = 80;
String type = score < 60 ? "不及格" : "及格";
System.out.println(type);
/*
運算子的優先級,一元運算子最優
*/
}
}
運算子優先級
短路原則
boolean f1 = true;
boolean f2 = false;
//短路原則
System.out.println(f2&&f1); //因為邏輯與是全為真則結果為真,所以在判斷法等于false時,就不會再執行f1的判斷了
//驗證短路原則
int flag = 5;
boolean f3 = (flag < 4)&&(flag++ < 4);
System.out.println(f3);
System.out.println(flag);
System.out.println("================================");
位運算 效率高【跟底層二級制打交道】
<< **左移 ** 相當于*2
>> **右移 ** 相當于/2
/*
A = 0011 1100
B = 0000 1101
A&B = 0000 1100 全為1,則為1
A|B = 0011 1101 都為0,則為0
A^B = 0011 0001 異或 相同則為0,否則為1
~B = 1111 0010 取反
2*8 = 16 = 2*2*2*2
<< 左移 相當于*2
>> 右移 相當于/2
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 0101 5
0000 0110 6
0000 0111 7
0000 1000 8
0001 0000 16
*/
System.out.println(2 << 3);
System.out.println("===============================");
面試題
- new物件,判斷是否相等
String s1 = new String("nihao");
String s2 = new String("nihao");
String s3 = "nihao";
String s4 = "nihao";
System.out.println(s1==s2);
System.out.println(s3==s4);
輸出結果:
flash
true
- 字串連接符 + ,String
System.out.println(" "+a+b);和System.out.println(a+b+" ");輸出區別
前者輸出1020,后面的a+b中的+變成了連接符
后者輸出30,a+b里面的+是運算子
int a = 10;
int b = 20;
System.out.print("\" \"+a+b:");
System.out.println(" "+a+b);
System.out.print("a+b+\" \"
System.out.println(a+b+" ");
輸出結果:
" "+a+b:1020
a+b+" ":30
- ++位置
? y = x++;和z = ++x;輸出區別(各自結果)
int x = 1; //x=1
int y = x++; //y=1,x=2【先將x賦給y,在x+1】
System.out.println(x); //x=2
int z = ++x; //x=3【先x+1,再將x賦給z】
System.out.println(x); //3
System.out.println(y); //1
System.out.println(z); //3
輸出結果:
3
1
3
命名規范
- 見名知意
- 類名:首字母大寫和駝峰原則
- 常量:全部大寫,單詞之間下劃線
- 類成員變數:首字母小寫和駝峰原則(除首字母外,之后的單詞首字母大寫)
- 區域變數:首字母小寫和駝峰原則
- 方法名:首字母大寫和駝峰原則
包機制
-
為了更好地組織類
-
一般利用公司與組織的倒名作為包名(http://baidu.com就是com.baidu)
-
import 導包
-
防止命名空間重復
JavaDOC
-
Javadoc命令是用來生成自己的API檔案
-
可用的引數資訊:
- @author 作者名
- @version 版本號
- @since 知名需要最早使用的jdk版本
- @param 引數名
- @return 回傳值情況
- @throws 例外宣告情況
-
cmd輸出API幫組檔案方式
進到檔案位置(namespace位置)
javadoc -encoding UTF-8 -charset UTF-8 檔案名.java【要生成API的java類名】
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/547375.html
標籤:其他
上一篇:Pandas 常用操作
下一篇:Collection單列集合總結
