栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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+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 {
    
    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 {
        
        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 

  • 注意下面这种错误写法

    数组初始化中一定要用运算符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 {
    
    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 {
    
    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返回的是数组的行数
    • arr[i].length返回的是第i+1行的列数
    • 由于二维数组可能是不规则数组,所以每一行的列数量可能不相同,因此在遍历二维数组时,最好使用数组的length属性控制循环次数,而不是用某他变量或常量。
四.遇到的问题 1.for each

有个❓问题

好像for-each只能用于遍历打印?

我写了这个赋值的循环发现没有效果

2.数组越界

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/397436.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号