java学习笔记2(datawhale教程):运算符和表达式流程控制数组
Posted 临风而眠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习笔记2(datawhale教程):运算符和表达式流程控制数组相关的知识,希望对你有一定的参考价值。
java学习笔记2(datawhale教程):运算符和表达式、流程控制、数组
文章目录
一.运算符和表达式
运算符 | 功能 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 ,两个操作数都是整数时,表示整除法;否则表示浮点除法 |
% | 整数取余 |
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+4
int 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); //返回false
System.out.println(3<7); //返回true
System.out.println((3<7)&&(3>7)); //返回false
System.out.println((3<7)||(3>7)); //返回true
System.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<以上是关于java学习笔记2(datawhale教程):运算符和表达式流程控制数组的主要内容,如果未能解决你的问题,请参考以下文章