Java基础语法(七)

版权声明:作者已开启版权声明,如转载请注明转载地址。 https://blog.csdn.net/qq_34829447/article/details/82023418

一.编码相关

1.ASCII编码表

  • 英文全称:American Standard Code for Information Interchange,美国标准信息交换代码
  • ASCII编码表由来
    • 计算机中,所有的数据在存储和运算时都要使用二进制数表示
    • a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号, 在计算机中存储时也要使用二进制数来表示
    • 具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码)
    • 大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。
  • 中文编码表
    • GB2312(升级为GBK):一个汉字对应一个十进制
    • Unicode:万国码,国际标准ISO
  • 字符中重要的ASCII对应
    • 0——48
    • A——65
    • a——97

这里写图片描述

2.char类型的存储

  • 取值范围

    • short:占两个字节,是有符号数据,数据范围为-32768-32767
    • char:占两个字节,是无符号数据,数据范围为0-65536
  • 类型转换:char类型的数据参加运算时要转换成int类型

  • 实例代码

    /*
            ASCII编码表演示
            字符Java 数据类型,char
            整数Java 数据类型,int
    
            int 类型和 char 数据类型转换
            char  两个字节, int 四个字节
    
            char转成int类型的时候,类型自动提示,char数据类型,会查询编码表,得到整数
            int转成char类型的时候,强制转换,会查询编码表
    
            char存储汉字,查询Unicode编码表
    
            char可以和int计算,提示为int类型, 内存中两个字节
            char取值范围是0-65535, 无符号的数据类型
        */
    public class ASCIIDemo{
      public static void main(String[] args){
          char c = 'a';
          int i = c + 1;
          System.out.println(i);
    
          int j = 90;
          char h = (char)j;
          System.out.println(h);
    
          System.out.println( (char)6 );
    
          char k = '你';
          System.out.println(k);
          char m = -1;
      }
    } 

二.数组方法的练习

1.数组逆序

这里写图片描述

  • 逆序思想:数组最远端位置的互换,每次互换后,start索引位置后移,end索引位置前移,再进行互换,直到start超越了end,互换结束。

  • 数组的指针思想:数组的索引(指针是可以随时指向数组任意位置定位的索引)

  • 实例代码

    for(int min=0,max=arr.length-1;min<max;min++,max--){...}

2.选择排序

这里写图片描述

  • 每个元素都和指定索引比

  • 实例代码

    扫描二维码关注公众号,回复: 2913135 查看本文章
    /*
    
         数组的排序: 一般都是升序排列,元素,小到大的排列
    两种排序的方式
         选择排序: 数组的每个元素都进行比较
         冒泡排序: 数组中相邻元素进行比较
         规则: 比较大小,位置交换
    */
    public class ArrayMethodTest_2{
        public static void main(String[] args){
            int[] arr  = {3,1,4,2,56,7,0};
            //调用选择排序方法
            //selectSort(arr);
            printArray(arr);
        }
        /*
            定义方法,实现数组的选择排序
            返回值: 没有
            参数:  数组
            实现步骤:
              1.嵌套循环实现排序
                外循环,控制的是一共比较了多少次
                内循环,控制的是每次比较了多少个元素
              2. 判断元素的大小值
                小值,存储到小的索引
        */
        public static void selectSort(int[] arr){
            for(int i = 0 ; i < arr.length - 1; i++){
                //内循环,是每次都在减少,修改变量的定义
                for(int j = i+1 ; j < arr.length ; j++){
                    //数组的元素进行判断
                    if(arr[i] > arr[j]){
                        //数组的换位
                        int temp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = temp; 
                    }
                }
            }
        }
    
        /*
           定义方法,实现功能
           返回值: void
           方法参数: 数组
        */
        public static void printArray(int[] arr){
            //输出一半中括号,不要换行打印
            System.out.print("[");
            //数组进行遍历
            for(int i = 0 ; i < arr.length ; i++){
                //判断遍历到的元素,是不是数组的最后一个元素
                //如何判断 循环变量 到达 length-1
                if( i == arr.length-1 ){
                    //输出数组的元素和]
                    System.out.print(arr[i]+"]");
                }else{
                //不是数组的最后一个元素,输出数组元素和逗号
                    System.out.print(arr[i]+",");
                }
            }
            System.out.println();
        }
    }

3.冒泡排序

这里写图片描述

  • 每个元素都和后一个元素比较

  • 实例代码

    /*
    数组的排序: 一般都是升序排列,元素,小到大的排列
    两种排序的方式
        选择排序: 数组的每个元素都进行比较
        冒泡排序: 数组中相邻元素进行比较
        规则: 比较大小,位置交换
    */
    public class ArrayMethodTest_2{
      public static void main(String[] args){
          int[] arr  = {3,1,4,2,56,7,0};
          //调用选择排序方法
          //selectSort(arr);
          //调用冒泡排序方法
          bubbleSort(arr);
          printArray(arr);
      }
      /*
        定义方法,实现数组的冒泡排序
        返回值: 没有
        参数:  数组
    */
      public static void bubbleSort(int[] arr){
          for(int i = 0 ; i < arr.length - 1; i++){
              //每次内循环的比较,从0索引开始, 每次都在递减
              for(int j = 0 ; j < arr.length-i-1; j++){
                  //比较的索引,是j和j+1
                  if(arr[j] > arr[j+1]){
                      int temp = arr[j];
                      arr[j] = arr[j+1];
                      arr[j+1] = temp;
                  }
              }
          }
      }
    
      /*
        定义方法,实现功能
        返回值: void
        方法参数: 数组
    */
      public static void printArray(int[] arr){
          //输出一半中括号,不要换行打印
          System.out.print("[");
          //数组进行遍历
          for(int i = 0 ; i < arr.length ; i++){
              //判断遍历到的元素,是不是数组的最后一个元素
              //如何判断 循环变量 到达 length-1
              if( i == arr.length-1 ){
                  //输出数组的元素和]
                  System.out.print(arr[i]+"]");
              }else{
                  //不是数组的最后一个元素,输出数组元素和逗号
                  System.out.print(arr[i]+",");
              }
          }
          System.out.println();
      }
    }

4.折半查找

这里写图片描述

  • 前提:被查找的数组元素必须有序排列

  • 折半查找公式:(min+max)/2

  • 思路

    • 折半后的指针索引和被查找的元素比较
    • 元素>中间索引上的元素,小指针=中间+1
    • 元素<中间索引上的元素,大指针=中间-1
    • 元素=中间索引上的元素,输出结果
    • 小指针索引>大指针索引,结束
  • 实例代码

    /*
    数组的查找功能
    在一个数组中,找一个元素,是否存在于数组中,如果存在,就返回索引,存在返回-1
    */
    public class ArrayMethodTest_3{
      public static void main(String[] args){
          int[] arr = {1,3,5,7,9,11,15};
          int index = binarySearch(arr,10);
          System.out.println(index);
      }
      /*
             定义方法,实现,折半查找
             返回值: 索引
             参数: 数组,被找的元素 
             实现步骤:
               1. 需要的变量定义
                  三个,三个指针
    
               2. 进行循环折半
                  可以折半的条件  min <= max
    
               3. 让被找元素,和中间索引元素进行比较
                   元素 > 中间索引  小指针= 中间+1
                   元素 < 中间索引  大指针= 中间-1
                   元素 == 中间索引  找到了,结束了,返回中间索引
    
                4. 循环结束,无法折半
                  元素没有找到 ,返回-1
         */
      public static int binarySearch(int[] arr, int key){
          //定义三个指针变量
          int min = 0 ;
          int max = arr.length -1 ;
          int mid = 0;
          //循环折半,条件 min<=max
          while( min <= max){
              //公式,计算中间索引
              mid = (min+max)/2;
              //让被找元素,和中间索引元素进行比较
              if(key > arr[mid]){
                  min = mid + 1;
              }else if (key < arr[mid]){
                  max = mid - 1;
              }else{
                  //找到元素,返回元素索引
                  return mid;
              }
          }
          return -1;
      }
      /*
           定义方法,实现数组的普通查询
           返回值: 索引
           参数:   数组, 被找的元素
    
           实现步骤:
             1. 遍历数组
             2. 遍历过程中,使用元素和数组中的元素进行比较
                如果相同,返回元素在数组中的索引
                如果不同,返回负数
        */
      public static int search(int[] arr, int key){
          //遍历数组
          for(int i = 0 ; i < arr.length ; i++){
              //数组元素,被查找的元素比较
              if(arr[i] == key){
                  //返回索引
                  return i;
              }
          }
          return -1;
      }
    }

猜你喜欢

转载自blog.csdn.net/qq_34829447/article/details/82023418
今日推荐