java学习笔记2(datawhale教程):运算符和表达式、流程控制、数组
java學習筆記2(datawhale教程):運算符和表達式、流程控制、數組
文章目錄
- java學習筆記2(datawhale教程):運算符和表達式、流程控制、數組
- 一.運算符和表達式
- 1.數學函數與常量
- 2.結合賦值和運算符
- 3.自增與自減運算符
- 4.關系和Boolean運算符
- 5.運算符優先級
- 二.控制流程
- 1.塊作用域
- 2.條件語句(if 、else)
- 3.循環(while 、do while)
- 4.確定循環(for 循環)
- 5.中斷控制流程語句
- 6.選擇語句(switch)
- 三.數組
- 1.數組的定義與初始化
- 2.for-each循環
- 3.多維數組(二維數組為例)
- 創建二維數組
- 賦值
- 來點好玩的遍歷!
- 4.不規則數組
- 還是來個好玩的遍歷
- 四.遇到的問題
- 1.for each
- 2.數組越界
public static void main 是什么意思?
【IntelliJ IDEA】IDEA自動生成文檔注釋的設置方法
一.運算符和表達式
| + | 加 |
| - | 減 |
| * | 乘 |
| / | 除 ,兩個操作數都是整數時,表示整除法;否則表示浮點除法 |
| % | 整數取余 |
1.數學函數與常量
-
數學函數包含在Math類中
Math 的方法都被定義為 static 形式,通過 Math 類可以在主函數中直接調用
-
一些常用的如:
-
求平方根:
額,草率了
package com.apache.test;public class HelloWorld { // enum Size {SMALL,MEDIUM,LARGE,EXTRA_LARGE}; // Size s = Size.MEDIUM;public static void main(String[] args){double x = 4;double y = Math.sqrt(x);System.out.println(y);} } -
冪運算
pow方法有兩個double類型的參數,其返回結果也為double類型
package com.apache.test;public class HelloWorld { // enum Size {SMALL,MEDIUM,LARGE,EXTRA_LARGE}; // Size s = Size.MEDIUM;public static void main(String[] args){double x=2;double a=3;double y=Math.pow(x,a);System.out.println(y);} }y為x的a次方
-
三角函數
public class HelloWorld {public static void main (String []args){System.out.println("45 度的正弦值:" + Math.sin(Math.PI/4));System.out.println("0度的余弦值:" + Math.cos(0));System.out.println("60度的正切值:" + Math.tan(Math.PI/3));System.out.println("1的反正切值: " + Math.atan(1));System.out.println(Math.PI);} }
-
-
若不想添加前綴Math,就在源文件頂部添加代碼:import static java.lang.Math.*;
package com.apache.test; import static java.lang.Math.*; public class HelloWorld {public static void main (String []args){System.out.println("45 度的正弦值:" + sin(Math.PI/4));System.out.println("0度的余弦值:" + cos(0));System.out.println("60度的正切值:" + tan(Math.PI/3));System.out.println("1的反正切值: " + atan(1));System.out.println(Math.PI);} }
2.結合賦值和運算符
+=、*=、%=
package com.apache.test; import static java.lang.Math.*; public class HelloWorld {public static void main (String []args){int x=1;x+=4;//等價于x=x+4int y=1;y=y+4;System.out.println(x);System.out.println(y);} }3.自增與自減運算符
package com.apache.test; public class HelloWorld {public static void main (String []args){int m = 7;int n = 7;int a = 2* ++m;int b = 2* n--;System.out.println("a="+a);System.out.println("b="+b);} }4.關系和Boolean運算符
下面演示==,!=,&&(邏輯與),||(邏輯或),x?y:z(三目運算符)等運算符
package com.apache.test; public class HelloWorld {public static void main (String []args){int x=3;int y=7;System.out.println(3==7); //返回falseSystem.out.println(3<7); //返回trueSystem.out.println((3<7)&&(3>7)); //返回falseSystem.out.println((3<7)||(3>7)); //返回trueSystem.out.println((3>7)?3:7);System.out.println((3!=7)?3:7);} }位運算符就暫時不探究了 (流下懶狗的眼淚)
5.運算符優先級
二.控制流程
- 用條件語句和循環結構來確定控制流程
1.塊作用域
- 塊由一對大括號括起來的語句
- 塊確定了變量的作用域
- 一個塊可以嵌套在另外一個塊里面
- 但是不能在嵌套的兩個快中聲明相同名的變量
2.條件語句(if 、else)
和之前的C++區別不大
package com.apache.test; public class HelloWorld {/**** @param args*/public static void main (String []args){int x = 31;if( x == 10 ){System.out.print(" X is 10");}else if( x == 20 ){System.out.print(" X is 20");}else if( x == 30 ){System.out.print(" X is 30");}else{System.out.print("這是 else 語句");}} }3.循環(while 、do while)
和之前的C++區別不大
4.確定循環(for 循環)
和之前的C、C++區別也不大 😂
5.中斷控制流程語句
continue、break
6.選擇語句(switch)
語法和之前的C、C++區別還是不大
case 、default
別忘了加break
三.數組
1.數組的定義與初始化
-
聲明數組變量
dataType[] arrayRefVar; //首選的方法 dataType arrayRefVar[]; //效果相同,但不是首選下面那種是來自C/C++風格的聲明數組的形式, 首選上面那種JAVA風格的
-
創建數組
接著上面的聲明數組變量
-
new操作符
arrayRefVar = new dataType[arraySize]; //元素上面的語法完成了兩件事:
- 用dataType[arraySize]創建了一個數組
- 把新創建的數組的引用賦值給變量arrayRefVar
-
-
聲明和創建數組一條語句完成
-
格式1
元素類型[] 數組名 = new 元素類型[元素個數或數組長度]; dataType[] arrayRefVar = new dataType[arraySize]; -
格式2
元素類型[] 數組名 = new 元素類型[]{元素,元素,……}; 元素類型[] 數組名 = {元素,元素,……}; dataType[] arrayRefVar = {value0,value1,...,valuek};
和C語言一樣:索引從0開始,索引值從 0 到 arrayRefVar.length-1
-
-
來看些例子呀
package com.apache.test; public class HelloWorld {/**** @param args*/public static void main (String []args){double[] myList; //首選double myList2[]; //非首選int[] arr1 = new int[5];float[] arr2 = new float[5];int[] arr3 = new int[]{3,5,1,7};double[] arr4 = {1.3,1.1,1.5,1.7};float[] arr5 = new float[]{1.9f,1.1f,1.5f,1.7f};int[] arr6 ;arr6 =new int[2];arr6[0] = 1;arr6[1] = 2;for(int i=0;i<arr4.length;i++){System.out.println(arr4[i]);}for(int j=0;j<arr5.length;j++){System.out.println(arr5[j]);}for(int k=0;k<arr6.length;++k){System.out.println(arr6[k]);}} } -
注意下面這種錯誤寫法
數組初始化中一定要用運算符new
一開始float一個數組遇到報錯,查了一下:
2.for-each循環
也叫加強型循環,用于在不使用下標的情況下遍歷數組
-
語法格式
for(數據類型 element: 數組名){System.out.println(element); } double[] myList=new double[]{1.1,1.2,1.5,1.9,2.1,3.3,3.5,9.9};// for(double element:myList) // { // double i=1.0; // element=i; // ++i; // // }for(double elem : myList){System.out.println(elem);}
3.多維數組(二維數組為例)
創建二維數組
同一維數組一樣,二維數組在聲明時也沒有分配內存空間,同樣要使用關鍵字new來分配內存,然后才可以訪問每個元素
-
通過例子來看兩種聲明方式和分配內存的方式
//直接分配行列 int a[][]; a = new int[2][4];//先分配行,再分配列 int[][] b; //另一種聲明方式 b = new int[2][]; b[0] = new int[2]; //給第一行分配列 b[1] = new int[2]; //給第二行分配列 -
聲明和創建數組一起
//直接分配行列 int a[][] = new int[2][]; a[0] = new int[3]; a[1] = new int[3]; -
注意點
賦值
-
來看三種初始化的方式
public static void main (String []args) {int tdarr1[][]={{1,3},{5,9}};int tdarr2[][]=new int[][]{{1,3},{5,9}};//先給數組分配內存空間int tdarr3[][]=new int[2][3];tdarr3[0] = new int[] {6,54,71}; //給第一行分配一個一維數組tdarr3[1][0]=1;tdarr3[1][1]=2;tdarr3[1][2]=4;}
來點好玩的遍歷!
package com.apache.test; public class HelloWorld {/**** @param args*/public static void main (String []args){char arr[][]= new char[8][];//8行的二維數組arr[0] = new char[]{'錦','瑟','無','端','五','十','弦'};arr[1] = new char[]{'一','弦','一','柱','思','華','年'};arr[2] = new char[]{'莊','生','曉','夢','迷','蝴','蝶'};arr[3] = new char[]{'望','帝','春','心','托','杜','鵑'};arr[4] = new char[]{'滄','海','月','明','珠','有','淚'};arr[5] = new char[]{'藍','田','日','暖','玉','生','煙'};arr[6] = new char[]{'此','情','可','待','成','追','憶'};arr[7] = new char[]{'只','是','當','時','已','惘','然'};System.out.println("-----橫版-----");for(int i=0;i<8;i++){for(int j=0;j<7;j++){System.out.print(arr[i][j]+" ");//System.out.print 不換行//System.out.println 換行}if(i%2 == 0){System.out.println(",");}else {System.out.println("。");}}System.out.println("-----豎版-----");for(int j=0;j<7;j++){for(int i=7;i>=0;i--){System.out.print(arr[i][j]+" ");}System.out.println(" ");}System.out.println("。 , 。 , 。 , 。 ,"); // 輸出最后的標點/*錦瑟無端五十弦,一弦一柱思華年。莊生曉夢迷蝴蝶,望帝春心托杜鵑。滄海月明珠有淚,藍田日暖玉生煙。此情可待成追憶,只是當時已惘然。*/} }4.不規則數組
還是來個好玩的遍歷
下面用了普通循環和for each循環
package com.apache.test; public class HelloWorld {/**** @param args*/public static void main (String []args){char arr[][]= new char[4][];//4行的二維數組,不指定列數arr[0] = new char[]{'眾','里','尋','他','千','百','度'}; //第一行分配7個元素arr[1] = new char[]{'驀','然','回','首'}; //第二行分配4個元素arr[2] = new char[]{'那','人','卻','在'}; //第三行分配4個元素arr[3] = new char[]{'燈','火','闌','珊','處'}; //第四行分配5個元素/*眾里尋他千百度,驀然回首,那人卻在,燈火闌珊處。*/for(int i=0;i<arr.length;i++){for(int j=0;j<arr[i].length;j++){System.out.print(arr[i][j]+" ");}System.out.println(" ");} //for each循環for(int i=0;i<arr.length;i++){for(char temp: arr[i]){System.out.print(temp+" ");}System.out.println(" ");}} }- 注意上面代碼中:
- arr.length返回的是數組的行數
- arr[i].length返回的是第i+1行的列數
- 由于二維數組可能是不規則數組,所以每一行的列數量可能不相同,因此在遍歷二維數組時,最好使用數組的length屬性控制循環次數,而不是用某他變量或常量。
四.遇到的問題
1.for each
有個?問題
好像for-each只能用于遍歷打印?
我寫了這個賦值的循環發現沒有效果
2.數組越界
查了一下原因,是數組越界了
原來是因為七言律詩被我搞成了八言…
總結
以上是生活随笔為你收集整理的java学习笔记2(datawhale教程):运算符和表达式、流程控制、数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: moocpython程序设计答案_中国大
- 下一篇: 爬取链家北京租房数据并做简单分析