JAVA基础--JAVA SE(知识点总结 Ⅱ )

简介: JAVA基础

一.流程控制语句

1.Java中的流程控制语句
  • 三类

    • 顺序结构语句:从进入到程序的入口之后,代码从上而下依次加载

      • 如: 从main进来之后,直接去输出,依次输出...
    • 选择结构语句:

      • if语句-----开发中使用比较多的,尤其格式2:if...else...
      • switch语句
    • 循环结构语句:

      • for
      • while
      • do-while
2.选择结构语句之if
  • 格式一:

    • 判断表达式是否成立,如果成立,则执行语句,否则不执行;
    • 注意事项:

      • if()后面不能带分号
      • 有分号的地方就不能{,有{的地方,不能有分号

            if(表达式){
                
                语句;
            }
//导包
import java.util.Scanner ;

public class IfDemo1{
    
    public static void main(String[] args){
            //创建键盘录入对象
            Scanner sc = new Scanner(System.in);
            //提示并录入数据
            System.out.println("请输入一个数据num:");
            int num = sc.nextInt();
            
            //判断
            if(num >=15){
                System.out.println("num大于等于15");
            }
            System.out.println("over");
        
    }
}
  • 格式二:

    • 执行流程:

      • 首先判断表达式是否成立,如果成立,则执行语句1...
      • 如果不成立,执行语句2...

                if(表达式){        
                    语句1 ...;
                }else{
                    语句2...;
                }
//导包
import java.util.Scanner;

public class IfDemo2{    

    public static void main(String[] args){
    
    //创建键盘录入对象
    Scanner sc = new Scanner(System.in);
    
    //提示并录入数据
    System.out.println("请输入第一个数据:");
    int a = sc.nextInt();
    
    System.out.println("请输入第二个数据:");
    int b = sc.nextInt();
    
    //if...else... 流程语句

    //方式1:直接使用变量接收 (推荐第一种)
    //定义一个变量
    int max;
    if(a > b){
        //将a的值赋值给max
        max = a; 
        
        //System.out.println(a+"是最大值");
    }else {
        //将b的值赋值给max
        max = b ;
        //System.out.println(b+"是最大值");
    }
    
    System.out.println("max:" + max);
    
    System.out.println("----------------------------------"); 
    
    //方式2:直接输出
    if(a > b){
        System.out.println(a + "是最大值");
    }else {
        System.out.println(b + "是最大值");
        }
    }
}
  • 格式三:

    • 执行流程:

      • 先判断表达式1是否成立,成立,执行语句1
      • 如果不成立,继续判断表达式2是否成立,成立,则执行语句2,,,

            ...
        
      • 如果上面的表达式都不成立,执行else中的语句n..

                if(表达式1){
                        语句1 ...;
                }else if(表达式2){
                    语句2...;
                    ...
                }else{
                    语句n...;
                    
                }
//导包
import java.util.Scanner ;

class IfDemo4{
    
public static void main(String[] args){
    //创建键盘录入对象
    Scanner sc = new Scanner(System.in) ;
    //提示,录入数据
    System.out.println("请输入学生的成绩:") ;
    int  socre = sc.nextInt() ;
    
    /*
        90-100    优秀 
        80-90     较好
        70-80     良好
        60-70     及格
        60以下    不及格
    */
    //if格式3
    /*
    if(socre>=90 && socre<=100){
        System.out.println("优秀") ;
    }else if(socre>=80 && socre<90){
        System.out.println("较好") ;
        
    }else if(socre>=70 && socre<80){
        System.out.println("良好") ;
    }else if(socre>=60 && socre<70){
        System.out.println("及格") ;
    }else{
        System.out.println("不及格") ;
    }
    */
    
    //学习任何计算机语言:程序---最终给客户去用的,考虑开发完成之后,自测
    //测试 :正确的数据 ,错误数据,边界数据
    
    //优化:最终版:加入一些非法数据的提示
    if(socre>100 || socre<0){
        System.out.println("您输入的数据不合法") ;
    }else if(socre>=90 && socre<=100){
        System.out.println("优秀") ;
    }else if(socre>=80 && socre<90){
        System.out.println("较好") ;
    }else if(socre>=70 && socre<80){
        System.out.println("良好") ;
    }else if(socre>=60 && socre<70){
        System.out.println("及格") ;
    }else{
        System.out.println("不及格") ;
    }
    
        //jvm:java虚拟机 校验你的语法的时候,需要校验语法的整个结构,考虑如果if的里面都不成立,这个程序没有结束;
        //就会出现问题;
        
    }

}
  • if...else...嵌套

    • 格式

      if(表达式1){
                      if(表达式2){
                          
                          语句1;
                      }else{
                          语句2;
                      }
                  
              }eles{
                  if(表达式3){
                          
                          语句3...;
                      }else{
                          语句4...;
                      }
                  
              }
      import java.util.Scanner ; 
      class IfTest{
          
          public static void main(String[] args){
              
              //创建键盘录入对象
              Scanner sc = new Scanner(System.in) ;
              
              //提示并录入数据
              System.out.println("请输入第一个数据:") ;
              int num1 = sc.nextInt() ;
              
              System.out.println("请输入第二个数据:") ;
              int num2 = sc.nextInt() ;
              
              System.out.println("请输入第三个数据:") ;
              int num3 = sc.nextInt() ;
              
              
              
              int max ; 
              if(num1>num2){
                  //语句----if...else
                  if(num1>num3){
                      max = num1 ; //num1大
                  }else{
                      max = num3 ; //num3大
                  }
                  
              }else{
                  
                  //num2比num1大
                  if(num2>num3){
                      //将num2赋值max
                      max = num2 ;
                  }else{
                      //将num3赋值给max
                      max = num3 ;
                  }
                  
              }
              System.out.println("三个数据的最大值是:"+max) ;
              
              
          }
      }
      3.选择结构语句之switch
  • 格式

     switch(表达式或者某个变量值){
               case  值1:
                          语句1;
                          break ;
               case  值2:
                          语句2:
                          break ;
               ...
    
               default:
                          语句n;
                          break ;
               }
    /*需求:
               键盘录入一个值,判断星期
                      1,星期一
                      2,星期二
                      3,星期三,
                      4,星期四
                      5,星期五
                      6,星期六
                      7,星期日 */
    import java.util.Scanner;
    
    public class SwicthDemo {
    
        public static void main(String[] args) {
            //创建键盘录入对象
            Scanner sc = new Scanner(System.in) ;
            //提示并录入数据
            System.out.println("请输入一个星期(1-7的数据): ") ;
            int week = sc.nextInt() ;
      switch (week){
                case 1:
                    System.out.println("星期一") ;
                    break ;
                case 2:
                    System.out.println("星期二") ;
                    break ;
                case 3:
                    System.out.println("星期三") ;
                    break ;
                case 4:
                    System.out.println("星期四") ;
                    break ;
                case 5:
                    System.out.println("星期五") ;
                    break ;
                case 6:
                    System.out.println("星期六") ;
                    break ;
                case 7:
                    System.out.println("星期日") ;
                    break ;
                default :
                    System.out.println("非法数据") ;
                    break ;
            }
        }
    }
  • 执行流程

    • switch接收结果

      • 接收的结果和case后面的值1进行对比,成立,执行语句1,break 结束语句;
      • 值1和switch接收的结果不匹配,和值2进行比较,成立,执行语句2, break,结束语句;
      • ...
      • 如果上面case都不匹配,执行default语句,语句n,break ,结束...
  • switch后面的跟的值的数据类型可以有哪些类型?

    • 基本数据类型:byte,short,int,char
    • jdk5以后可以是枚举类型 enum:引用类型
    • jdk7以后可以是String字符串 :引用类型
  • switch语句中的注意事项也是 (考点)

    • 关于switch中的case语句后面只能常量,不能是变量 (体现Java是一种强类型语言)

      *  前端的javascript(弱类型语言):它里面的swtich的case是可以是变量,可以是个常量 
      
    • 在书写switch语句的标准结构,不忘了break,如果语句中忘了书写break,会出现一个现象:case穿透!

      public class SwitchTest {
          public static void main(String[] args) {
               
              // case穿透   
              int a = 3 ;
              int b = 4 ;
              switch (a){//3
                  default:
                      b++ ;
                      break;
                  case 2:
                      b ++;
                  case 3://匹配成功
                      b++ ; //4 ++ = 5
                  case 4 :
                      b++ ; // 5++ = 6
              }
              //b的值是多少;
              System.out.println("b:"+b);
       * 在有的需求里面利用  case穿透 来完成一些需求;
      
         ```java
         import java.util.Scanner;
         
         public class SwitchTest2 {
         
             public static void main(String[] args) {
                 //创建键盘录入对象
                 Scanner sc = new Scanner(System.in) ;
                 //提示并录入数据
                 System.out.println("请您输入一个月份的值:") ;
                 int month = sc.nextInt() ;
                 //利用case穿透:灵活运用
                 switch (month){
                     case 3:
                     case 4:
                     case 5:
                         System.out.println("春季") ;
                         break ;
                     case 6:
                     case 7:
                     case 8:
                         System.out.println("夏季");
                         break ;
                     case 9:
                     case 10:
                     case 11:
                         System.out.println("秋季");
                         break ;
                     case 12:
                     case 1:
                     case 2:
                         System.out.println("冬季");
                         break ;
                     default:
                         System.out.println("非法数据!!") ;
                         break ;
                 }
             }
         }
         ```
      
    • 关于switch语句的结束条件

      • 要么遇见break结束
      • 程序默认执行到末尾
    • 关于default语句可以在switch语句中的任何位置,不影响语句的执行流程;

      • 不管在任何位置,只要case语句都不匹配,执行default;
      • 如果default语句在语句中,break不要省略
      • 如果default语句的末尾,break可以省略(不建议);
/*
使用switch语句,完成模拟单项选择题操作
*/
import java.util.Scanner;

public class Demo9 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("电视剧《仙剑奇侠传》中,李逍遥的扮演者是谁?");
        System.out.println("请选择以下选项:" + "\n" + "[A.胡歌]" + "\t" + "[B.彭于晏]" + "\t" + "[C.袁弘]" + "\t" + "[D.霍建华]");

        String choice = scanner.next();//使用字符串
        switch (choice){
            case "A":
                System.out.println("恭喜你,回答正确!");
                break;
            case "B":
                System.out.println("对不起,回答错误!");
                break;
            case "C":
                System.out.println("对不起,回答错误!");
                break;
            case "D":
                System.out.println("对不起,回答错误!");
                break;
            default:
                System.out.println("没有该选项 ");
                break ;
        }
        System.out.println("-------------------------------------------------------");
        
         int choice = sc.nextInt() ;
        //将int类型---转换成char
        char choiceNum = (char) choice ;
        System.out.println(choiceNum);
        switch (choiceNum){
            case 'A':                                                //65
                System.out.println("√");
                break ;
            case 'B':                                                //66
                System.out.println("×");
                break ;
            case 'C':                                                //67
                System.out.println("×");
                break ;
            case 'D':                                                //68
                System.out.println("×");
                break ;
            default:
                System.out.println("没有该选项 ");
                break ;
        }
    }
}
4.循环结构语句之for
  • 格式

    for(初始化语句;条件表达式;控制体语句或者步长语句){
    
            循环体语句;
    
    }       //降低了冗余度
  • 执行流程

    • 初始化语句:给变量赋值 (只执行一次)
    • 然后执行条件表达式,看其是否成立,如果成立,执行的是循环体语句------>再次回到控制体语句或者步长语句--->变量自增或者自减
    • 随后再次执行条件表达式,看其是否成立,成立,继续循环体语句---->再次回到控制体语句或者步长语句---->变量自增或者自减

      ....

    • 一直执行到条件表达式不成立,for循环结束;
  • 举例

    • 需求:

      • 在控制台输出1-10的每一个数据
      • 循环的求和思想
      • 在控制台输出1-10的之间的所有的数据之和
    • 求和思想:

      • 将上面的这种格式变形一下:
      • 定义一个结果变量: 从0开始 sum这个变量

        • 0 + 1 = 1 ;

          • 1 + 2 = 3 ;

            • 3 + 3 = 6 ;

              • 6 + 4 = 10 ;

                • 10 +5 = 15 ;

                  ....

      • 两个加数:
      • 前面的这个加数:就是求和结果变量sum,从0开始
      • 后面的这个加数:就是1-10的数据;
    • 使用步骤:

      • 定义一个最终结果变量sum,从0开始记录
      • 使用 for(初始化语句;条件表达式;控制体语句){

        ​ //循环体语句

        ​ //先取出来每一个数据

        ​ 使用结果变量就是上面的数据求和,然后再赋值给最终结果变量;

        ​ }

      • 输出sum即可
public class ForDemo {
    public static void main(String[] args) {
        //定义一个结果变量
        int sum = 0 ;
        for(int x = 1 ; x <=10 ; x ++) {// 1-10之间的数据
             //x的取整:1,2....10;
            sum += x ; //sum = sum + x ;

        }
        System.out.println("1-10的数据之和是:"+sum);
    }
}
  • 经典-水仙花数

    • 需求:在控制台输出所有的水仙花数

      • 水仙花数

        • 水仙花指的是三位数,而且这个三位数的每一个位上的立方相加就是当期数据本身
        • 举例:153 = 1 1 1 + 555 + 333

          • 153 % 10 = 3 ;---确定个位的数据
          • 153 / 10 % 10 = 5 --- 确定十位的数据
          • 153 /10 /10 %10 = 1 --- 确定百位上的数据 或 153 / 100 = 1
    • 分析:

      • 三位数,明确了范围 100-999---使用for循环
      • 确定每各位的数据本身的值:

        • 定义三个变量,分别代表个位,十位,百位数据本身
        • int ge = 当前这个数据 % 10 ;

          int shi = 当前这个数据 /10 %10 ;

          int bai = 当前这个数据 /10/10 % 10 ;

      • for循环中加入逻辑判断
      • 如果当前x == (gegege)+(shishishi)+(baibaibai),
      • 满足条件,直接输出x
public class forDemo {
    public static void main(String[] args) {
        System.out.println("水仙花数是:") ;

        // 三位数,明确了范围 100-999---使用for循环       
        for (int x = 100; x < 1000; x++) {
            //x:100-999的数据
            //确定每各位的数据本身的值:
            // 定义三个变量,分别代表个位,十位,百位数据本身
            int ge = x %10 ; //x=153
            int shi = x /10 %10 ;
            int bai = x /10 /10 % 10;
            
            if(x==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){
                System.out.println(x) ;
            }


        }
    }
}
5.循环结构语句之while
  • 格式

     初始化语句;
             while(条件表达式){
                 循环体语句 ;
                 控制体语句或者步长语句;
             }
  • 执行流程:

    • 首先,先初始化语句,对变量赋值;
    • 执行条件表达式,是否成立;若成立,则执行循环体语句,依据控制体语句进行变量控制--->再次判断条件表达式是否成立,成立,执行循环体语句--->控制体语句进行变量控制
    • ...
    • 当条件表达式不成立,while循环结束;
    • 注意事项:控制体语句不要忘了,否则死循环;
  • 举例

    • while循环统计水仙花有多少个,并输出
public class WhileTest {
    public static void main(String[] args) {
        //定义统计变量
        int count = 0 ;
        //初始化语句
        int m = 100 ;
        while(m<=999){
            //循环体
            //求出ge,shi,bai的数据
            int ge = m % 10 ;
            int shi = m /10 % 10;
            int bai = m /10 /10 % 10 ;
            //满足条件
            if(m ==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){
                //统计变量自增
                count ++;
                System.out.println("第"+count+"次,"+"水仙数是:"+m);
            }
            m++ ;
        }
        System.out.println("水仙花数共有:"+count+"个");
    }
}
  • for循环和while循环的区别

    • 1)共同点:

      • 都能够描述一种循环思想,可以将重复性冗余代码进行优化,提搞程序阅读性
    • 2)不同点:

      • 格式不同

        •    for(初始化语句;条件表达式;控制体语句){
             
                     循环体语句;
             
             }
        • 初始化语句;

          while(条件表达式){
          
              循环体语句;
          
              步长语句;
          
          }
      • 场景不同

        • for循环:明确循环次数 (开发中优先都使用for)
        • while循环:不明确循环次数:
        • 举例:

          键盘录入一个数据,玩猜数字游戏,你也不知道到录入多少次才能猜中

      • 是否节省内存资源:从格式上说

        • for循环的好处:循环结束之后,变量被释放了
        • 而while循环,循环结束,依然能够使用这个变量,相对for循环格式来说,比较耗费内存资源
      • 实际开发中:for是使用最常见的
6.循环结构语句之do while
  • 格式

        初始化语句;
        do{
            循环体语句 ;
            控制体语句 ;
            
        }while(条件表达式) ;
    这个循环语句和while,for循环最大的区别: 当条件不成立的,循环体至少执行一次.
public class DoWhileDemo {
    public static void main(String[] args) {

        int x = 6 ;  //初始化了
        do{
            System.out.println("helloJavaSE"); //执行循环体
            x++;  //7
        }while(x<=5) ;
    }
}
7.循环结构语句之死循环
  • 死循环的两种格式

    • 第一个格式

          for(;;){
               
            循环体语句;
               
           }
    • 第二个格式:

          while(true){  
      
               //死循环格式中使用比较多
               循环体语句;
      
          }
  • 举例

    • 猜数游戏

      • 分析:

        • 需要产生一个随机数:java.lang.Math 里面的功能random()产生一个1-100之间的随机数

          • jdk提供了类:java.lang.Math
          • java.lang包下的类不需要导包,针对数学运算的工具类,提供了很多的方法;
          • 获取伪随机数,取值范围:[0.0,1.0)

          //不断的键盘录入

        • while(true){

          • 创建一个键盘录入对象,录入int类型
          • 录入的数据要和Math里面产生的1-100之间数据进行对比,
          • 如果大了,提示 "你要猜的数据大了"
          • 如果小了,提示"你要猜的数据小了"
          • 如果一致,提示"恭喜您,猜对了"
          • 结束死循环,break ;

            }

    public class DieLooperTest {
        public static void main(String[] args) {
    
            //需要产生一个随机数:java.lang.Math 里面的功能random()产生一个
            //1-100之间的随机数
            int number = (int) (Math.random() *100 +1); //[0.0-1.0)*100-->[0.0-100.0)-->[1.0-101.0) 强转取整1-100
            System.out.println(number) ;
            //定义统计变量
            int count = 0 ;
            //不断的键盘录入
            while(true){
                //只要进一次循环就开始计算
                count ++;
                //创建键盘录入对象
                Scanner sc = new Scanner(System.in) ;
    
                //提示并录入数据
                System.out.println("请您输入要猜的数字:") ;
                int guessNumber = sc.nextInt() ;
    
                //使用guessNumber上面的随机数获取到的number进行对比
                if(guessNumber>100 || guessNumber< 0){
                    System.out.println("你要输入数据不合法,它是在0-100之间");
                }else if(guessNumber> number){
                    //如果大了,提示 "你猜的数据大了"
                    System.out.println("你猜的"+guessNumber+"大了") ;
                }else if(guessNumber <number){
                    //如果小了,提示"你猜的数据小了"
                    System.out.println("你猜的"+guessNumber+"小了") ;
                }else{
                    //如果一致,提示"恭喜您,猜对了"
                    System.out.println("恭喜您,第"+count+"次猜对了") ;
    
                    //结束死循环
                    break ;
                }
            }
    
        }
    }
8.循环结构语句(补充)
  • for循环嵌套(双重for循环)

    //for循环的嵌套
              for(初始化语句1;条件表达式1;控制体语句1){   //可以看做控制行
                  //循环体就是for循环语句
                  for(初始化语句2;条件表达式2;控制体语句2){  //可以看做控制列
                      循环体语句;,,,
                  }
              }
  • 举例

    • 99乘法表

        public class ForForDemo {
          public static void main(String[] args) 
              for(int x = 1 ; x <= 9 ; x++){ //9行列
                  for(int y = 1 ; y<= x ; y++){//列数随着x的变化而变化
                      System.out.print(x + "×" + y + "=" + (y*x) + "\t");
                      //1*1=1
                      //2*1=2  2*2=4
                      //3*1=3  3*2=6  3*3=9
                      //4*1=4  4*2=8  4*3=12  4*4=16...
                  }
                  System.out.println();//换行
      
              }
          }
      }

二.跳转控制语句

1.break
  • break:中断结束(结束循环或者switch语句中)

    public class BreakDemo {
        public static void main(String[] args) {
    
           // break ;
    
            //for循环,10次
            for(int x = 1 ; x <=10 ; x++){
                //加入一个逻辑判断
                if(x == 3){
                    break ; //循环中使用/ switch本身语法就带break
                }
    
                System.out.println(x) ;       // 1   2  (x == 3时跳出循环)
            }
        }
    }
2.continue
  • continue:只是结束当前循环,继续立即进入下次循环(循环语句中使用)

    public class ContinueDemo {
        public static void main(String[] args) {
    
            //for循环
            for(int x = 1; x<=10 ; x++){
                if(x == 2){
                    continue;//只是结束当前循环,继续立即进入下次循环
                }
                System.out.println(x);      //2不输出
                //1
                //3
                //4
                //5
                //6
                //7
                //8
                //9
                //10
            }
        }
    }    
3.return
  • return:结束方法的 (结束有具体返回值的方法)

    • return: 实际开发中,return 需要携带结果,-------引入Java中定义方法
    • return: 与Java中的方法相关的,很少单独去使用
public static void main(String[] args) {

        System.out.println("程序开始了...");
        //for循环
        for(int x =1 ; x <=10 ;x ++){
            //加入逻辑判断
            if(x==3){
                System.out.println("条件成立..");

                return ;  //很少单独用---->结束了方法

            }
            System.out.println(x) ;
        }
        System.out.println("程序结束了,Over...");
    }

在这里插入图片描述
)]

目录
相关文章
|
3月前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
74 2
|
1月前
|
存储 设计模式 SQL
[Java]知识点
本文涵盖Java编程中的多个知识点,包括静态与动态代理、基本数据类型转换、设计模式、异常处理、类加载、序列化、ORM框架、IPv4地址分类、编译与解释等。文章详细介绍了每个知识点的原理和使用方法,并提供了相关示例和注意事项。
41 16
[Java]知识点
|
28天前
|
网络协议 Java 物联网
Java网络编程知识点
Java网络编程知识点
41 13
|
1月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
2月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
88 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
3月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
472 37
|
2月前
|
前端开发 小程序 Java
java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机
这篇文章介绍了Java中Map的遍历方法、使用Pattern和matches进行正则表达式匹配,以及后端向前端传输图片并保存到手机的三种情况。
22 1
|
2月前
|
Oracle Java 关系型数据库
|
3月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
3月前
|
缓存 安全 Java
【Java面试题汇总】Java基础篇——基础、修饰符和关键字(2023版)
Java的特点和优点,、Java 8的新特性、面向对象、基本数据类型和引用类型、自动拆装箱与自动装箱、==与equals()的区别、为什么重写equals()就要重写hashcode()、抽象类和接口的区别、重载和重写的区别、四种引用方式、wt()和sleep()的区别、java方法是值传递还是引用传递?访问修饰符、static、final、this和super、volatile的用法及原理
【Java面试题汇总】Java基础篇——基础、修饰符和关键字(2023版)