java第二天
阿新 • • 發佈:2019-02-14
鍵盤錄入:
import java.util.Scanner;
class Input{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個整數");
int x = sc.nextInt();
System.out.println(x);
}
}
java選擇語句中表達式的結果必須是布林型別,也就是隻能是true、false。
if語句控制的語句體如果是一條語句,大括號可以省略;(最好不要省略)
通過if語句給未賦值變數時:
class IfTest{
public static void main(String[] args){
int x = 3;
int y;
if(x==3){
y = x;}
else{y = 0;}
}
System.out.println(y)
}
//執行正確
class IfTest{
public static void main(String[] args){
int x = 3;
int y;
if ( x==3 ){
y = x;}
else if (x != 3){
y = 0;}
}
System.out.println(y)//可能尚未賦值的y
}
//執行錯誤
class IfTest{
public static void main(String[] args){
int x = 3;
int y;
if( x==3 ){
y = x;}
else {
x++;}
}
System.out .println(y)//可能尚未賦值的y
}
//執行錯誤
switch語句後面是條件表示式,可以支援各種型別
case後面只能是常量不能是變數。
default語句可以省略,也可以放在任意位置,但都是最後執行
break省略會導致case語句穿透情形
int x = 3;
int y = 4;
switch(x){
default:
y++;
case 3:
y++;
case 4:
y++;
}
System.out.println(y)//6
迴圈識別符號:
a:for(int i=1;i<10;i++){
b:for(int j=1;j<i;j++){
System.out.print("*");
break a;}//退出a迴圈
System.out.println();
}
陣列預設初始化值:
整數型別:byte,short,int,long預設初始值都是0
浮點型別:float,double預設初始值都是0.0
布林型別:boolean預設初始值false。
字元型別:char預設初始值為’\u0000’。
記憶體:
棧:儲存區域性變數(先進後出)
堆:儲存new出來的陣列或物件
靜態陣列:
1、資料型別[ ]陣列名 = new 資料型別[ ]{元素1,元素2,元素3,…}
2、資料型別[ ]陣列名 = {元素1,元素2,元素3,…}
如下
int[] arr1 = new int[5]{1,2,3};//報錯,不允許動靜結合
int[] arr1 = new int[]{1,2,3};
int[] arr2 = {1,2,3};
對於第二種方法不能先宣告再賦值
int[] arr3;
arr3 = new int[]{1,2,3};//正確
int[] arr2;
arr2 = {1,2,3};//報錯
二維陣列:
第一種賦值方式
int[][] a = new int[3][2];
System.out.println(a);//a的地址
System.out.println(a[1]);//a[1]的地址
第二種賦值方式
int[][] a = new int[3][];
a[0] = new int[3];
a[1] = new int[5];
System.out.println(a);//a的地址
System.out.println(a[1]);//a[1]的地址
System.out.println(a[2]);//預設值null
第三種賦值方式
int [][] arr = {{1,2},{2,31,42},{1}}
基本資料型別的值傳遞,不改變原值
引用資料型別(例如陣列),改變原值,傳遞的是地址。
java到底是傳值還是傳址,答案傳值,這是高司令(java之父說的)wtf?