JAVA 基礎語法 Part 2
類型轉換
- 由於JAVA士強類型語言,所以要進行運算的時候,需要用到類型轉換
低--------------------->高
byte,short,char-> int-> long-> float-> double
- 運算中,不同類型的數據先轉化為同一類型,然後進行運算
public class DEMO03 { //類型轉換
/*
低--------------------->高
byte,short,char-> int-> long-> float-> double
*/
public static void main(String[] args) {
int i=128;
//Byte MAX_VALUE = 127;
byte b=(byte)i;//高->低
double b2=i;//低->高,自動轉換
//強制轉換 (類型)變量名 高-->低
//自動轉換 低-->高
System.out.println(i);
System.out.println(b);//變-128,因為byte最大值127,所以內存溢出了(運算時盡量避免)
System.out.println(b2);//128.0
/*
注意點:
1. 不能對布林值進行轉換
2. 不能把對象類型轉換為不相干的類型
3. 在把高容量換成低容量需要強制轉換
4. 在轉換的時候可能存在內存溢出,或者精度問題!
*/
System.out.println("===================================");
//精度問題!
System.out.println((int)23.7);//double 23
System.out.println((int)-45.89f);//float -45
System.out.println("===================================");
char c='a';
int d =c+1;//char轉int不用強轉,因為char比較低
System.out.println(d);//98
System.out.println((char) d);/*
b (轉碼表裡98=b)
int轉char需要強轉
*/
}
}
public class DEMO04 { //類型轉換
public static void main(String[] args) {
//操作比較大的數的時候,注意溢出問題
//JDK7特性,數字間可以用下划線分割
int money=1_000_000_000;
int years=20;
int total=money*years;//-1474836480: 計算時溢出了
long total2=money*years;//-1474836480: 默認int,轉換之前已經存在問題
long total3=money*((long)years);//20000000000: 先把一個數轉換為long
//or 也可以寫成 long total3=((long)money*years);
System.out.println(total);
System.out.println(total2);
System.out.println(total3);
}
}
變量與常量
變量
- 變量就是可以變化的量
- JAVA是一種強類型語言,每個變量都必須聲明其類型
- JAVA變量是程序中最基本的存儲單元,其要素包括變量名,變量類型和作用域
type varName [=value][{,varName=[=value]}];
//數據類型 變量名=值; 可以使逗號隔開來聲明多個同類型變量
//但不建議這麼寫
- 注意事項:
- 每個變量都有類型,類型可以是基本類型,也可以引用類型
- 變量名必須是合法的標示符
- 變量聲明是一條完整的語句,因此每一個聲明都必須以分號結束
//int a,b,c;
//int a=1,b=2,c=3; //程式可讀性
String name="asd";
char x='X';
double pi=3.14;
//類
public class DEMO06 {
//類變量 static
static double salary=2500;
//屬性:變量
//實例變量: 從屬於對象; 如果不初始化會變成默認值
//布林值:默認值是false
//除了基本類型,其餘的默認值都是null
String name;
int age;
//main 方法
public static void main(String[] args) {
//局部變量: 必須聲明和初始化值
int i = 10;
System.out.println(i);
//實例 //變量類型 變量名=new DEMO06
DEMO06 demo06=new DEMO06();
//demo06.age.sout
System.out.println(demo06.age);//0 因為age沒有初始化值
System.out.println(demo06.name);//null 因為name沒有初始化值
//類變量 static
System.out.println(salary);
}
//其他方法
public static void add() {
}
}
常量
- 常量(Constant):初始化(initialize)後不能在改變值!不會變動的值。
- 所謂常量可以理解成一種特殊的變量,它的值被設定後,在程序運行過程中不允許被改變
final 常量名=值;
final double PI = 3.14;
public class DEMO07 {
//修飾符,不存在先後順序
static final double PI=3.14;
//or final static double PI=3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
變量的命名規範
- 所有變量、方法、類名:見名知意;
- 類成員變量:首字母小和駝峰原則:monthSalary;(除了第一個單詞以外,後面的單詞首字母大寫)
- 局部變量:首字母小寫和駝峰原則;
- 常量:大寫字母和下劃線:MAX_VALUE;
- 類名:首字母大寫和駝峰原則:Man, GoodMan;
- 方法名:首字母小寫和駝峰原則:run (),runRun ()。
運算符
JAVA 語言支持如下運算符
- 算術運算符: +, -, *, %, ++, --
- 賦值運算符: =
- 關係運算符:>, <, >=, <=, ==, !=instanceof(不等於)
- 邏輯運算符:&&(於), ||(或), !(非)
- 位運算符:& , | , ^ , ~ , >> , << , >>>(了解 ! ! !)
- 條件運算符:?
- 擴展賦值運算符:+= , -=, *=, /=
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);//因為int只有整數所以0.5會輸出0,要強制轉換成double或float
System.out.println("========================================");
long a0=121212121;
int b0= 123;
short c0= 10;
byte d0=8;
System.out.println(a0+b0+c0+d0);//long類型 多個操作中有一個類型為long,那麼結果類型也為long
System.out.println(b0+c0+d0);//int類型
System.out.println(c0+d0);//int類型
System.out.println("========================================");
//關係運算符返回的結果: 正確or錯誤
//if
int a1=10;
int b1=20;
int c1=21;
System.out.println(a1>b1);//false
System.out.println(a1<b1);//ture
System.out.println(a1==b1);//false
System.out.println(a1!=b1);//ture
//取於,模運算
System.out.println(c1%a1);//1
}
}
!自增,自減,初識Math類
package operator;
public class DEMO02 {
public static void main(String[] args) {
//++自增 --自減
int a=3;
int b=a++;//a++ --> a=a+1 執行完這還code後,先給b附值,在自增
System.out.println(a);//4 等於4是因為前面已經被b自增+1了
int c=++a;//++a -->a=a+1 執行完這還code後,先自增,再給c附值,
System.out.println(a);//5 因為已經自曾兩次所以=5
System.out.println(b);//3 這裡的b是先被a賦值後才自增所以不會顯示出
System.out.println(c);//5 c是b的值(4)自增完(+1)後再賦值所以=5
System.out.println("==================================");
//冪運算 2^3 2*2*2=8 很多運算,會使用一些工具類來操作
double pow = Math.pow(2,3);
System.out.println(pow);
}
}
邏輯運算符
package operator;
//邏輯運算符
public class DEMO03 {
public static void main(String[] args) {
//與 && (and) 或 || (or) 非 ! (取反)
boolean a= true;
boolean b= false;
System.out.println("a && b:"+(a&&b));// 邏輯與:兩個變量都為真,結果才為 true
System.out.println("a || b:"+(a||b));// 邏輯或:兩個變量有一個為真,則結果才為 true
System.out.println("!(a && b):"+!(a&&b));// 取反:如果是真,則變為假;如果是假,則變為真
System.out.println("========================================");
//短路運算
int c=5;
boolean d=(c<4)&&(c++<4);//如果c<4是false那他就不會去執行後面的code,c就不會自增
System.out.println(d);//false
System.out.println(c);//因為後面(c++<4)沒有執行所以輸出的結果一樣式5
/*boolean d=(c>4)&&(c++<4); d的結果也是false因為c自增後還是比4大
System.out.println(d);//false
System.out.println(c); 輸出6,因為前面(c>4)是對的所以會執行c自增
*/
}
}
位運算符
package operator;
public class DEMO04 {
public static void main(String[] args) {
/*
位運算符
A = 0011 1100
B = 0000 1101
----------------------------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~B = 1111 0010
2*8 = 16
<< *2
>> /2
*/
System.out.println(2<<3);
}
}
擴展運算符
package operator;
public class DEMO05 {
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(""+a+b);
System.out.println(a+b+"");
}
}
三元運算符
package operator;
//三元運算符
public class DEMO06 {
public static void main(String[] args) {
//x ? y : z
//如果x==ture,則結果為y,否則結果為z
int score=80;
String type=score<60 ?"不及格":"及格";
//if
System.out.println(type);
}
}
包機制
- 包的本質就是文件夾
- 為了更好地組織類,Java 提供了包機制,用於區別類名的命名空間。
- 包語句的語法格式為
package pkg1[.pkg2[.pkg3……]];
- 一般利用公司域名倒置作為包名 ex: com.oggy.xxxx /com.asd.xxxx
- 為了能夠使用某一個包的成員,我們需要在 Java 程序中明確導入該包。使用 "import" 語句可完成此功能。
import package1[.package2……].(classname | *);
import com.oggy.base.*;//導入這個包下所有的類
JAVADOC
- javadoc 命令是用來生成自己 API 文檔的。
- 參數信息
- @ author 作者名
- @ version 版本號
- @ since 指明需要最早使用的 jdk 版本
- @ paran 參數名
- @ return 返回值情況
- @ throws 異常拋出情況
package com.oggy.base;
//加在類上面就是類的注釋
/**
* @author oggy
* @version 1.0
* @since 17
*/
public class Doc {
String name;//方法
//加在方法上面就是方法的注釋
/**
*
* @param name
* @return
* @throws Exception
*/
public String test(String name)throws Exception{ //屬性
return name;
}
}
/**
*在C:\Users\oggy1\Desktop\學習\Java_SE\src\com\oggy\base>開啟cmd
*執行:javadoc -encoding UTF-8 -charset UTF-8 Doc.java 會生成文檔(index.html)
*