30天搞定Java--day6

每日一考和複習

每日一考

  1. 循環結構是如何最後退出循環的,有哪些不同的情況請說明
1.循環條件不滿足
2.運行break
3.運行return,函數結束,循環也就結束了,不是專門用來結束循環的
  1. 指出如下程序輸出的結果:
label: for (int i = 1; i <= 4; i++) {
			for (int j = 1; j <= 10; j++) {
				if (j % 4 == 0) {
					continue label;
				}
				System.out.print(j);
			}
			System.out.println();
}
當內層循環的j == 4時,continue label,也就是說會輸出123123123123,不換行
  1. 一個數如果恰好等於它的因子之和,這個數就稱爲"完數"。例如6=1+2+3。編程 找出1000以內的所有完數。(因子:除去這個數本身的其它約數)
class PerfectNumber{
	public static void main(String[] args){
		int sumFactor = 0;
		for(int i = 2;i <= 1000;i++){
			for(int j = 1;j <= i / 2;j++){
				if(i % j == 0){
					sumFactor += j;
				}
			}
			if(sumFactor == i){
				System.out.println(i);
			}
			sumFactor = 0;
		}
	}
}
/*
運行結果:
6
28
496
*/
  1. 說明break和continue使用上的相同點和不同點
相同點:都不會執行後面的代碼
不同點:break會跳出指定的循環,適用於循環和switch-casecontinue會進行下一次指定的循環,適用於循環
  1. 從控制檯輸出如下結構:
******
*****
****	
***	
**	
*
class PrintStar{
	public static void main(String[] args){
		for(int i = 1;i <= 6;i++){
			for(int j = 1;j <= 7 - i;j++){
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

複習
day5的學習內容

eclipse的安裝與設置

數組

數組的概念

  1. 數組(Array),是多個相同類型數據按一定順序排列的集合,並使用一個名字命名,並通過編號的方式對這些數據進行統一管理
  2. 數組的常見概念
    • 數組名
    • 下標(或索引)
    • 元素
    • 數組長度
  3. 數組本身是引用數據類型,而數組中的元素可以是任何數據類型,包括基本數據類型和引用數據類型
  4. 創建數組對象會在內存中開闢一整塊連續的空間,而數組名中引用的是這塊連續空間的首地址
  5. 數組的長度一旦確定,就不能修改
  6. 我們可以直接通過下標(或索引)的方式調用指定位置的元素,速度很快
  7. 數組的分類:
    • 按照維度:一維數組、二維數組、三維數組、…
    • 按照元素的數據類型分:基本數據類型元素的數組、引用數據類型元素的數組(即對象數組)

一維數組的使用

聲明

type var[] 或 type[] var;
//例如:
int a[];
int[] a1;
double b[];
String[] c; //引用類型變量數組

Java語言中聲明數組時不能指定其長度(數組中元素的數), 例如: int a[5]; //非法

初始化

// 靜態初始化,數組初始化和數組元素賦值同時進行
int arr[] = new int[]{3,9,8};
int[] arr = {3,9,8};
String names[] = {
	“李四光”,“茅以升”,“華羅庚”
}
// 動態初始化,數組初始化和數組元素賦值分開進行
int[] arr = new int[3];
arr[0] = 3;
arr[1] = 9;
arr[2] = 8;

String names[];
names = new String[3];
names[0] = “錢學森”;
names[1] = “鄧稼先”;
names[2] = “袁隆平”;

數組一旦初始化完成,長度就確定了

數組元素的調用

  • 數組元素的引用方式:數組名[數組元素下標]
  • 數組元素下標從0開始;長度爲n的數組合法下標取值範圍: 0 —>n-1
  • 每個數組都有一個屬性length指明它的長度,例如:a.length 指明數組a的長度(元素個數)

數組元素的默認初始化值

  • 數組是引用類型,它的元素相當於類的成員變量,因此數組一經分配空間,其中的每個元素也被按照成員變量同樣的方式被隱式初始化
數組的元素類型 元素默認初始值
byte 0
short 0
int 0
long 0L
float 0.0F
double 0.0
char 0或’\u0000’(空)
Boolean false
引用類型 null

數組的內存解析

內存的簡化結構
在這裏插入圖片描述一維數組創建初始化內存解析

int[] arr1 = new int[]{1,2,3};
String[] arr2 = new String[4];
arr2[1] = “西紅柿”;
arr2[2] = “土豆”;
String[] arr3 = new String[3];

上述代碼的內存解析過程(簡化,字符串其實是“錯”的)
在這裏插入圖片描述

// 在上述的代碼基礎上
arr2 = new String[3];

在這裏插入圖片描述- java有垃圾回收機制,當內存不能夠被調用時會被回收

練習題目

/*升景坊單間短期出租4個月,550元/月(水電煤公攤,網費35元/月),空調、衛生間、廚房齊全。
屋內均是IT行業人士,喜歡安靜。所以要求來租者最好是同行或者剛畢業的年輕人,愛乾淨、安靜。
*/
public class ArrayTest{
	public static void main(String[] args) {
		int[] arr = new int[]{8,2,1,0,3};
		int[] index = new int[]{2,0,3,2,4,0,1,3,2,3,3};
		String tel = "";
		for(int i = 0;i < index.length;i++){
			tel += arr[index[i]];
		} 
		System.out.println("聯繫方式:" + tel);
	} 
}

多維數組的使用

  • Java 語言裏提供了支持多維數組的語法
  • 對於二維數組的理解,我們可以看成是一維數組array1又作爲另一個一維數組array2的元素而存在
  • 從數組底層的運行機制來看,其實沒有多維數組

二維數組的聲明和初始化

// 靜態初始化
int[][] arr = new int[3][2];
int[][] arr2 = new int[][]{{3,8,2},{2,7},{9,0,1,6}};
int[][] arr2 = {{3,8,2},{2,7},{9,0,1,6}};// 類型推斷,聲明初始化分開不能推斷
// 動態初始化
int[][] arr3 = new int[3][3];
int[][] arr4 = new int[3][]; // 第二維不寫也可以

二維數組元素的調用

System.out.println(arr2[1][1]); // 7
System.out.println(arr4[2][0]); // 空指針異常
arr4[1] = new String[3];
  • 二維數組的長度
System.out.println(arr2.length); // 3
System.out.println(arr2[1].length); // 2
  • 二維數組的遍歷
for(int i = 0;i < arr.length; i++) {
	for(int j = 0;j < arr[i].length;j++) {
		System.out.print(arr[i][j]);
	}
}

二維數組的默認初始化值

int arr[][] = new int[4][4];
System.out.println(arr[0]);
System.out.println(arr);
// 運行結果,一個[表示一個維度,I爲int型
[I@28a418fc
[[I@5305068a
int arr2[][] = new int[4][];
System.out.println(arr[1]);// null

二維數組內存解析

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章