JAVA-studyDay02

java-day02

一.注释

//书写注释是非常好的习惯
//单行注释 //
//多行注释 /* */
//JavaDoc:文档注释 /** */
//平时写代码一定要注意规范

注意:注释不会影响代码

二.运算符

1.算术 单目:~(按位取反)、! (取非)、-(负号运算符)、 ++(自增)、 - -(自减)、

双目:+ - * / %(取余)

三目:a>b?true:false 说明:当a大于b的时候,为true(也就是冒号之前的值),否则为false;这整个运算符包括一个关系运算符 可以是“>”"<""!="等等),一个“?”,一个“:”,冒号前后需要有两个表达式或者是值或者是对象。

2.关系 等于符号*:==,不等于符号:!= ,大于符号:>, 小于符号:<,大于等于符号:>= ,小于等于符号😗<= 。

3.位与逻辑

位运算符 与(&)、非(~)、或(|)、异或(^)

&:双目运算符,运算时均把运算数转换为二进制再做比较,规则:当相同的位上均为1时结果为1,否则结 果为0.如:1010&1101, 转为二进制:1111110010&10001001101,比较结果为:1000000转为十进制: 64。所以1010&1101=64;

| :当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110

~:0变1,1变0

:两边的位不同时,结果为1,否则为0.如11001010=0110

逻辑运算符 与(&&)、非(!)、或(||)

4.赋值 = += -= *= /= %= &= ^= |= <<= >>=

instanceof ​ 该运算符是双目运算符,左面的操作元是一个对象,右面是一个类或接口。当左面的对象是右面的类(或右边类的子孙类)创建的对象、 或者是右边接口的实现类(或实现类的子孙类)的对象时,该运算符运算结果是true,否则是false。

5.运算符综述 Java 的表达式就是用运算符连接起来的符合Java 规则的式子.运算符的优先级决定了表达式中运算执行的先后顺序.例如,x<y&&!z相当于(x<y)&&(!z),没有必要去记忆运算符号的优先级别,在编写程序时可尽量的使用括号来实现你想要的运算次序,以免产生难以阅读或含糊不清的计算顺序.运算符的结合性决定了并列相同级别的运算符的先后顺序,例如,加减的结合性是从左到右,8-5+3 相当于(8-5)+3.逻辑否运算符 的结合性是右到左, x 相当于!(!x).表3.4是Java所有运算符的优先级和结合性。

6.位移 << 带符号左移 >>带符号右移 >>> 无符号右移

7.运算符优先级 按优先级从高到低排列如下:[ ] ( ) ++ – ! ~ instanceof * / % + - << >> >>> <> < = > \ == != &^& & || ? := op= 。

三.java流程控制(输入)

img

img

next

           ```java
          package com.Scaner;
         
          import java.util.Scanner;
         
          public class Demo01 {
              public static void main(String[] args) {
                  //创建一个扫描器对象,用于接受数据
                  Scanner scanner = new Scanner(System.in);
                  System.out.println("使用next方式接收:");
                  //判断用户有没有输入字符串
                  if (scanner.hasNext())
                  {
                      //使用next方式接收
                      String str=scanner.next();
                      System.out.println("输出的是:"+str);
                  }
                  //凡是属于IO流的类用完之后要关闭,如果不关闭会一直占用资源,要养成好习惯
                  scanner.close();
              }
          }
         
          ```

nextLine

package com.Scaner;

import java.util.Scanner;

public class Demo02 {
   public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);
       System.out.println("使用nextLine进行输入");
       //判断是还有输入
       if(scanner.hasNext())
      {
           String str=scanner.nextLine();
           System.out.println("输出的是:"+str);
      }
       scanner.close();
  }
}

四.结构

  1. 顺序

  2. 选择

    • if单选择结构 if( )

      package com.Struct;

      import java.util.Scanner;

      public class IfDemo01 {
         public static void main(String[] args) {
             Scanner scanner=new Scanner(System.in);
             //equals:判断字符串是否相等
             String s=scanner.nextLine();
             if(s.equals("Hello"))
            {
                 System.out.println(s);
            }

             System.out.println("End");

             scanner.close();
        }
      }

       

    • if双选择结构 if( ){ } else{ }

      package com.Struct;

      import java.util.Scanner;

      public class IfDemo02 {
         public static void main(String[] args) {
             //考试分数大于60及格,小于60不及格
             Scanner scanner=new Scanner(System.in);
             System.out.println("请输入你的分数");
             float score=scanner.nextFloat();
             //score:分数
             if(score>=60) {
                 System.out.println("及格");
            }
             else {
                 System.out.println("不及格");
            }
             scanner.close();
        }
      }
    • if多选择结构 if( ){ } else if { } else{}

      package com.Struct;

      import java.util.Scanner;

      public class IfDemo03 {
         public static void main(String[] args) {
             /**
              * 成绩判断
              */
             Scanner scanner=new Scanner(System.in);
             System.out.println("请输入成绩");
             int score = scanner.nextInt();
             if(score==100){
                 System.out.println("恭喜!满分");
            }
             else if (score>=90&&score<100){
                 System.out.println("A级");
            }
             else if (score>=80&&score<90){
                 System.out.println("B级");
            }
             else if (score>=70&&score<80){
                 System.out.println("C级");
            }
             else if (score>=60&&score<70){
                 System.out.println("D级");
            }
             else if (score>=0&&score<60){
                 System.out.println("不及格");
            }
             else {
                 System.out.println("成绩不合法");
            }

             scanner.close();
        }
      }
    • 嵌套的if结构 if( ){ if ( ) }

    • switch 使用switch时 变量可以是字符和String字符串

      package com.Struct;

      public class SwitchDemo01 {
         public static void main(String[] args) {
             //case:穿透   switch:匹配具体的值
             char c='B';
             switch(c){
                 case 'A':
                     System.out.println("优秀");
                     break;
                 case 'B':
                     System.out.println("良好");
                     break;
                 case 'C':
                     System.out.println("及格");
                     break;
                 default:
                     System.out.println("不及格");
            }

        }
      }
  1. 循环

    • while循环

      while(布尔表达式) {
      //循环内容
      }

      只要布尔表达式为true,循环就会一直执行下去。 我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环。 少部分情况需要循环一直执行,比如服务器的请求响应监听等。 循环条件一直为true就会造成无限循环【死循环】,我们正常的业务编程中应该尽量避免死循环。会影响程序性能或者造成程序卡死奔溃!

       

       

      思考:计算1+2+3+…+100=?

      // 计算1+2+3+...+100
         int i = 0;
         int sum = 0;
         while (i<=100){
             sum = sum + i;
             i++;
        }
         System.out.println(sum);
      }
    • do…while循环

      对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。 do…while循环和while循环相似,不同的是,do…while循环至少会执行一次。

      do {
      //代码语句
      }while(布尔表达式);

      While和do-While的区别:

      while先判断后执行。do while是先执行后判断! do…while总是保证循环体会被至少执行一次!这是他们的主要差别。

    int i = 0;
       int sum = 0;
       do {
           sum = sum + i;
           i++;
      }
       while (i<=100);
       System.out.println(sum);
    }

    while()条件不成立,不执行,do-while至少执行了一次(先执行,后判断)。

    • For循环

      虽然所有循环结构都可以用while或者do…while表示,但Java提供了另一种语句–for循环,使一些循环结构变得更加简单。 for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构。 for循环执行的次数是在执行前就确定的。 语法格式如下:

      for(初始化;布尔表达式;更新){
      //代码语句
      }

      练习1:计算0到100之间的奇数和偶数的和

      // 练习1:计算0到100之间的奇数和偶数的和
         int oddSum = 0;
         int evenSum = 0;
         for (int i = 0; i <= 100; i++) {
             if (i%2!=0){ // 奇数
                 oddSum+=i;
            }
             else { // 偶数
                 evenSum+=i;
            }
        }
         System.out.println("奇数的和:"+oddSum);
         System.out.println("偶数的和:"+evenSum);
      }

      练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个

      // 练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个
      for (int i = 0; i <= 1000; i++) {
          if (i%5 == 0){
              System.out.print(i+"\t");
          }
          if (i%(5*3)==0){
              System.out.println();
          }
      // System.out.print(i+"\t"); "\t"输出结果添加空格,不会让得出的结果挤在一起
             // printLn输出完会换行
             // print输出完不会换行

      练习3:打印九九乘法表

      // 练习3:打印九九乘法表
      /*1.我们先打印第一列,这个大家应该都会
      2.我们把固定的1再用一个循环包起来
      3.去掉重复项,i <= j
      4.调整样式
      */
      for (int j = 1; j <= 9; j++) {
         for (int i = 1; i <= j; i++) {
             System.out.print(i+"*"+j+"="+i*j+"\t");
        }
         System.out.println();
      }

      增强for循环

      for(声明语句:表达式){
      //代码句子}

       

    • break & continue

      break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用) continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

      int i =0;
      while (i<100){
         i++;
         if (i%10==0){ // 用于终止某次循环过程,跳过整十的数,之后再进行下一次循环,不终止程序
             System.out.println();
             continue;
        }
         System.out.print(i+"\t");
      }

五.方法

  1. 方法的定义

    Java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法: 方法包含一个方法头和一个方法体。下面是一个方法的所有部分: 修饰符: 修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。 返回值类型︰方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType是关键字void。 方法名: 是方法的实际名称。方法名和参数表共同构成方法签名。 参数类型: 参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。 形式参数: 在方法被调用时用于接收外界输入的数据。 实参: 调用方法时实际传给方法的数据。 方法体: 方法体包含具体的语句,定义该方法的功能。

    public static void main(String[] args) {
       int max = max(60,60);
       System.out.println(max);
       // 调用方法
    }
    // 比大小
    public static int max(int num1,int num2){
       int result = 0;
      if(num1==num2){
          System.out.println("num1==num2");
          return num1 & num2; // 终止方法
      }
      if (num1>num2){
          result = num1;
          System.out.println("num1大于num2");
      }
      else {
          result = num2;
          System.out.println("num2大于num1");
      }
      return result;
    }
  2. 方法的重载

重载就是在一个类中,有相同的函数名称,但形参不同的函数。

方法的重载的规则:

  • 方法名称必须相同。

  • 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。

  • 方法的返回类型可以相同也可以不相同。

  • 仅仅返回类型不同不足以成为方法的重载。

  • 实现理论: 方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。

public class Demo01 {
   public static void main(String[] args) {
       double max = max(60,60);
       System.out.println(max);
       // 调用方法
  }
   /*
   * 方法的重载的规则:
   方法名称必须相同。
   参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。
   方法的返回类型可以相同也可以不相同。
   仅仅返回类型不同不足以成为方法的重载。
   * */
   // 比大小,方法名字必须相同,参数类型不能相同。
   public static double max(double num1,double num2){
       double result = 0;
       if(num1==num2){
           System.out.println("num1==num2");
           return num1; // 终止方法
      }
       if (num1>num2){
           result = num1;
           System.out.println("num1大于num2");
      }
       else {
           result = num2;
           System.out.println("num2大于num1");
      }
       return result;
  }
   // 比大小
   public static int max(int num1,int num2){
       int result = 0;
      if(num1==num2){
          System.out.println("num1==num2");
          return num1 & num2; // 终止方法
      }
      if (num1>num2){
          result = num1;
          System.out.println("num1大于num2");
      }
      else {
          result = num2;
          System.out.println("num2大于num1");
      }
      return result;
  }
}
 

 

posted on 2023-02-14 12:49  呆小周  阅读(45)  评论(0)    收藏  举报