class MyClass
{
public static void main(String[] args){
//整形 byte(1) short(2) int(4) long(8)
//浮點 float(4) double(8)
//字元 char(2)
//布爾 boolean(1)
//變量定義必須指派才可以使用)整形預設是int 浮點預設是double 定義long 加L 定義float 加F)
//當資料類型不一樣,将會發生資料類型轉換:
// 1、自動類型轉換(隐式)
// 1、特點:資料範圍從小到大(指派左邊的類型範圍大于右邊(float範圍大于long))
// 2、強制類型轉換(顯式)
// 1、特點:資料範圍從大到小(指派左邊的類型範圍小于右邊(float範圍大于long))并且值沒有超過範圍
//byte/short/char 運算時會自動轉化為int 定義時沒有超過其範圍則java編譯器會自動加(byte) byte bb=40;(40預設是int byte bb=(byte)40;) i
Integer age=10;
System.out.println(age);
System.out.println(12);
System.out.println(-3.14);
System.out.println('A');
System.out.println(true);
{
int num=30;
}
int num=(int)20L;
System.out.println(num);
float num2=30L;//自動轉換
System.out.println(num2);//30.0
int num3=(int)3.56;//強制類型轉換
System.out.println(num3);//3
byte num4=12;
byte num5=23;
int ret=num4+num5;//byte/short/char 運算時會自動轉化為int 常量運算是可以的 byte bb1=4+8;
System.out.println(ret);
printObj(true);
}
public static void printObj(Object obj){
System.out.println(obj.toString());
}
}
//switch 用的資料類型 基本類型:byte/short/int/char 引用類型:String Enum
方法的重載 方法名相同 參數清單不同(參數類型 參數多類型順序 參數個數有關)與傳回值 參數名稱無關
java的記憶體劃分成為5個部分:
一、棧:存放方法中的局部變量
1、局部變量:方法參數或是方法{}内部的變量,有相應用作用域(一旦超出作用域立刻從棧記憶體中消失)
二、堆:凡是new出來的都在堆中,堆記憶體裡的東西都有一個位址值:16進制
堆記憶體裡的資料,都有預設值:整數: 0 浮點:0.0 字元:'\u0000' 布爾: false 引用類型:null
三、方法區:存儲.class相關資訊,包含方法的資訊
四、本地方法棧:與作業系統相關
五、寄存器:與CPU相關
數組定義兩種方法:動态初始化: int[] intArr=new int[3];
靜态初始化:int[] intArr={1,3,4};
繼承方法override 1、父子類方法名相同 參數清單也相同 2、子類的方法通路修飾符必須大于等于父類的通路修飾符(public > protected>default>private) 3、子類方法的傳回值類型必須小于父類的傳回值類型
繼承構造方法:子類new時(預設無參構造函數)會預設先調用父類預設無參構造函數(若父類寫了一個在參的構造函數則子類構造方法必須在第一行調用父類有參的構造函數)
接口:1、成員變量 預設是public static final 并必須指派 2、抽象方法 3、靜态方法(jdk8 public static 有方法體直接可以通過接口名調用) 4、預設方法(jdk8 public default有方法體 預設會繼承到實作類中所有實作類可以重寫) 5、私有方法(jdk9 private static 隻可以在接口内使用實作類不可以使用)
多态:左父=右子 成員變量的通路方法:
1、通過對象通路,左邊是誰就用其成員變量,沒有則向上找
2、通過成員方法通路成員變量,看方法是屬于誰就通路誰的成員的變量
成員方法的通路:編譯看左 運作看右
public class User {
int num=20;
public void show(){
System.out.println(num);
}
}
public class Student extends User {
int num=30;
int age=50;
public void show(){
System.out.println(num);
}
public static void main(String[] args) {
User user=new Student();//多态左父右子
System.out.println(user.num);//20 多态 通路成員變量 左邊是誰就用其成員變量,沒有則向上找
Student ss=new Student();
System.out.println(ss.num);//30
System.out.println(ss.age);//40
user.show();//30通過成員方法(沒有override) 方法屬于誰就調用其成員變量 若override就通路
}
}
匿名内部類(接口不用實作類)使用時不用實作接口的一個類直接在方法中new 接口名{實作接口的方法(與其接口實作類中的一樣)}