Java基础(基础语法、流程控制、数组)

一. 基础语法

  运算符:

    1. 算术运算符: +,-,*,/,%(取余数),++(自增),--(自减)

      ++(--)在前面时表示先 +(-)1 再执行下面的代码

      例子:

        int a = 0;            int a = 0;

        System.out.println(++a);        System.out.println(a++);

        System.out.println(a);     System.out.println(a);

        此时输出的结果为       此时输出的结果为

        1               0

        1               1

 

    2. 逻辑运算符:&(与),|(或),^(异或),!(非),&&,||

      &:只有当两边为 true 时结果才为 true;

      |:任意一个为 true 则结果为 true ;

      ^:两边相同时则结果为 true,不相同为 false;

      !:条件为 true 时结果为 false

      &&:与 & 不同的点在于如果 && 左边的条件不成立则不再执行,而 & 则是两个条件都会执行;

      ||:与&&类似,左边条件为 true 时则不再执行

    3. 关系运算符:==(相等),!=(不相等),<,>,<=,>=

    4. 三目运算符:x ? y : z

      X 为 boolean 类型表达式,先计算 x 的值,若为 true,整

    个三目运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。

      例子:

        int score = 75;

        String type = score >=60 ? "及格" : "不及格";

    5. 赋值运算符:=,+=,-=,*=,/=,%=

      例子:

        a += 1;相当于a = a+1,其他类似

    6. 字符串连接符:+

      例子:

        String hello = "He"+"llo"

二. 流程控制

  1. 选择结构

    1.1 if  条件语句

      if  条件结构是根据条件判断之后再做处理

      if(表达式){

        //语句块;

      }

    1.2 switch  语句

      switch(表达式){

        case 取值 1: 语句块 1;break;

        case 取值 n: 语句块 n;break;

        default: 语句块 n+1;break;
      }

      switch 语句有关规则

        (1)表达式的返回值必须是下述几种类型之一:int, byte, char, short,String;

        (2)case 子句中的取值必须是常量,且所有 case 子句中的取值应是不同的;

        (3)default 子句是可选的;

        (4)break 语句用来在执行完一个 case 分支后使程序跳出 switch 语句块;如果 case 后面没有写 break 则直接往下面执行!

        (5)Case 后面的执行体可写{ }也可以不写{ }

  2. 循环结构

    2.1 while  循环

      符合条件,循环继续执行;否则,循环退出

      特点:先判断,再执行

      while(表达式){

        //语句块;

      }

    2.2 do-while  循环

      先执行一遍循环操作,符合条件,循环继续执行;否则,循环退出

      特点:先执行,再判断

      do{

        循环语句;

      }while(表达式);

    2.3 for  循环

      for(初始化参数 ; 判断条件 ; 更新循环变量){

        循环体;
      }

    2.4 while 循环和 do-while 循环的区别?

      while 是先判断再执行,do-while 则是先执行再判断

  3. 跳转语句

    break:结束整个循环

    continue:结束本次循环,进行下次循环

    return:返回

三.数组

  1. 数组的创建以及特点

    1.1 创建格式

      格式 1. 数据类型[] 数组名称 = new 数据类型[数组长度];

      格式 2. 数据类型[] 数组名称 = {数组内容 1,数组内容 2,数组内容 3...数组内容 n};

      格式 3. 数据类型[] 数组名;

        格式 3 属于只创建了数组引用名, 并未在内存创建数组空间。

      格式 4. 数据类型[] 数组名称 = new 数据类型[]{内容 1,内容 2,内容 3...内容 n};

  2. 数组的使用

    2.21下标    

      可以理解为数组中内容的数字序号,从 0 开始 ,对于长度为 n 的数组,下标的范围是 0~n-1。

      可以通过下标的方式访问数组中的每一个元素。

      例子:

        int[] arr = new int[10];

        arr[5] = 123;

        System. out .println(arr[5]);

      输出结果为123

    2.2 数组长度获取

      数组名称.length

    2.3 注意

      数组的长度在创建时就固定了。

      使用数组不当, 会出现如下问题:

      (1)数组未赋值: 空指针异常

      (2)超出长度的下标操作: 数组越界异常

  3. 数组的练习

    3.1 冒泡排序

      原理:

      (1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。

      (2)对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

      (3)针对所有的元素重复以上的步骤,除了最后一个。

      (4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

 

      代码:

      public static void main(String[] args) {

        // 定义数组

        int[] nums = {1,3,9,5,6,7,15,4,8};

        // 定义交换变量

        int change;

        // 外循环为比较次数,循环次数为length-1

        for(int i=0;i<nums.length-1;i++) {

          // 内循环为每次比较的轮数,轮次为length-i-1

          for(int j=0;j<nums.length-i-1;j++) {

            // 如果后一位比较大则与之交换

            if(nums[j]>nums[j+1]) {

              change = nums[j+1];

              nums[j+1] = nums[j];

              nums[j] = change;

            }

          }

        }

      }

    3.2 二分查找(折半查找)

      原理:

        首先,假设数组中元素是按升序排列,将数组中间位置的数据与查找数据比较,如果两者相等,则查找成功;否则利用

      中间位置记录将数组分成前、后两个子数组,如果中间位置数据大于查找数据,则进一步查找前子数组,否则进一步查找后

      子数组。

        重复以上过程,直到找到满足条件的数据,则表示查找成功,直到子数组不存在为止,表示查找不成功。

      代码:

      public static void main(String[] args) {

        // 定义数组

        int[] nums = {1,2,3,4,5,6,7,8,9};

        // 区间最大下标

        int maxIndex = nums.length-1;

        // 区间最小下标

        int minIndex = 0;

        // 中间数据下标

        int centerIndex = (maxIndex+minIndex)/2;

        while (true) {

          if(nums[centerIndex]>6) {

            // 中间数据比要查找的数大时

            maxIndex = centerIndex-1;

            centerIndex = (maxIndex+minIndex)/2;

          }else if(nums[centerIndex]<6) {

            //中间数据比要查找的数小时

            minIndex = centerIndex+1;

            centerIndex = (maxIndex+minIndex)/2;

          }else{

            //中间数据刚好时

            break;

          }

          // 未找到时

          if(maxIndex<minIndex) {

            // 用于未找到时判断

            centerIndex = -1;

            break;

          }

        }

        // 判断是否找到

        if(centerIndex == -1) {

          System.out.println("6未找到");

        }else {

          System.out.println("6排序后的下标为:"+centerIndex);

        }

      }

  4. 多维数组

    4.1创建格式

      int[][] 二维数组 = new int[长度][];

    不常用

      

posted @   Luo_YB  阅读(121)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示