《Java程序設計》 第2周學習總結


20145318 《Java程序設計》第2周學習總結

教材學習內容總結

  • short,2字節;int,4字節;long,8字節;byte,1字節;float,4字節;double,8字節;char,2字節;boolean只有true和false。
  • 基本類型:整型(short、int、long) 、字節(byte) 、浮點型(float、double) 、字符(char)、布爾(boolean,只有true和false,且不能與其他類型運算)。
  • 常量:整數可以用二進制(b),八進制(o)、十進制、十六進制(x)。
  • 小數默認為double型,只有其后加f或F才是浮點型,double型精度更高。
  • 類型轉換:如果表達式中包括不同類型,則以精度最高的類型計算;可強制轉換,如sqrt的類型是double型,如果要直接引用即將int強制轉換為double型。
  • break 可以離開當前for、switch、while等循環語句,並執行循環外下一個語句。
  • continue 用於循環語句中,不執行其后的語句,回到循環開始進行下一次循環,不離開循環。
  • 除算術運算符、賦值運算符、比較運算符、邏輯運算符之前常用外,位運算符包括<<、>>、>>>、&、|、^、~,只能對二進制運算,有時用位運算符能簡化程序,但是可讀性不高,推薦學習但是實際編程不推薦。
  • goto可以用break/continue代替,之前用goto語句用的很順手,但是實際編程中不建議使用goto,在此總結一下goto語句的優缺點。優點:可以快速的跳出多重循環,方便的去到我所想要執行的語句處。缺點:雖然可以用goto代替ifelse等語句,但是它會使程序攪在一起,像一團亂了的毛線球,不容易閱讀,也就是所謂的破壞語言的結構性。總結來說,goto語句一般不用,盡量少用,特別是對於初學者,goto可能會在某些方面簡化程序,但是終究不是正解。

代碼調試中的問題和解決過程

打印九九乘法表

/*
需求:打印九九乘法表如下。
1*1=1
1*2=2   2*2=4
1*3=3   2*3=6   3*3=9
1*4=4   2*4=8   3*4=12  4*4=16
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81

思路:正三角形狀可用改變for循環中間的表達式實現,注意到每一行前面的乘數依次增加,后數不變,可用for循環嵌套實現。
針對得數位數不同,可用制表符\t使格式整齊。兩數之積直接用y*x表示。
*/
class  MultiplicationTable
{
public static void main(String[] args) 
{
	int x,y;
	for(x=1;x<=9;x++)
	{
		for(y=1;y<=x;y++)
		{													//兩種方法都可以打印,注意printf和print的區別
			System.out.printf("%d*%d=%d\t",y,x,y*x);				/*    此處用print不行。若不用"%d\t",可以用"%2d "   */
			//System.out.print(y+"*"+x+"="+y*x+"\t");				//制表符:\t,使每列對齊。
		}
		System.out.println();
	}
}
}

冒泡排序

 /*
需求:冒泡排序。
思路:冒泡排序即第一個元素與第二個元素進行比較,大者向后移動,第二個元素與第三個元素比較,大者向后移動,一輪比較完成時,最大的元素就在最后面,
此時開始第二輪比較,同樣是第一個與第二個比較,但是此時最后一個元素已經不需要比較了,依次類推,最后一輪第一個元素和第二個元素比較完成即排序完成。
交換數值:新定義函數
*/

class  BubbleSort
{
public static void main(String[] args) 
{
	int[] arr={4,2,9,6,8,3,1,5,7};
	printArray(arr);
	bubbleSort(arr);
	printArray(arr);
}
public static void bubbleSort(int[] arr)
{
	for(int i=0;i<arr.length;i++)
		for(int j=0;j<arr.length-i-1;j++)
//注意:-i是因為依次比較i次后后面的i個數已經確定,不需要再比較;
//-1是因為避免下一行arr[j+1]越界。
			if(arr[j]>arr[j+1])//注意比較的是相鄰兩元素。
	{
		sort(arr,j,j+1);
	}
}
	public static void printArray(int[] arr)//注意兩個函數包含在一個類中
{
	System.out.printf("[");//先打印一個[
	for(int i=0;i<arr.length;i++)//數組名.length表示數組長度
	{
		if(i<arr.length-1)
			System.out.printf("%d,",arr[i]);//若非最后一個元素,打印"%d,"
		else
			System.out.printf("%d]",arr[i]);//若是最后一個元素,打印"%d]"
	}
			System.out.printf("\n");//最后在循環外換行
}
public static void sort(int[] arr,int a,int b)
//int 三個系數,一個數組兩個代表數組的標號,不能直接int 兩個數
{
	int temp=arr[a];
	arr[a]=arr[b];
	arr[b]=temp;
}
}

結果

代碼托管

其他(感悟、思考等,可選)

  • 初學者學習Java這樣的操作性課程需要大量的練習,只有在編寫代碼的過程中才有所提高,但是我不提倡遇到問題遇到錯誤就去問同學問老師,我認為更好的解決辦法是自己查錯和百度,經過努力的糾錯過程才會印象更加深刻,特別是針對稍微復雜一點的循環嵌套,有很多需要注意的細節,比如<=和<,都需要考慮清楚。

  • 另外寫注釋的習慣也要逐步培養,養每段代碼class前有需求和思路分析,代碼中復雜的部分或者復習時需要注意的部分應該有所標記。

  • 之后會嘗試IDEA進行編寫。

  • 針對老師提出的問題應該盡快有回復或者改正。

學習進度條

參考資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM