版权声明:作者已开启版权声明,如转载请注明转载地址。 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; } }