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

Posted 临风而眠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习笔记2(datawhale教程):运算符和表达式流程控制数组相关的知识,希望对你有一定的参考价值。

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

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 {
    /**
     *
     * @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教程):运算符和表达式流程控制数组的主要内容,如果未能解决你的问题,请参考以下文章

java学习笔记1(datawhale教程):基本数据类型与变量

黑马程序员Java教程学习笔记

黑马程序员Java教程学习笔记

datawhale9月组队学习task04集合运算

吃瓜教程——datawhale10月组队学习

吃瓜教程——datawhale10月组队学习