900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java学习笔记2(datawhale教程):运算符和表达式 流程控制 数组

java学习笔记2(datawhale教程):运算符和表达式 流程控制 数组

时间:2018-07-04 12:43:29

相关推荐

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 each2.数组越界

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.数组越界

查了一下原因,是数组越界了

原来是因为七言律诗被我搞成了八言…

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。