导图社区 Java基础程序设计
Java基础知识点,适合期末复习。容量小的数据类型与容量大的数据运算时,主动提升为容量大的数据类型数据容量排序。
编辑于2022-05-23 17:07:08基本程序设计
数据类型
基本数据类型
整数类型:byte,short,int,long.浮点类型:float、double字符类型:char布尔型:boolean
引用数据类型
class
自动类型提升
容量小的数据类型与容量大的数据运算时,主动提升为容量大的数据类型数据容量排序:byte,char,short<int<long<float<double特别的:当byte,char,short运算时,结果为int型
强制类型转换
数据类型 变量名=(强转数据类型)变量截断操作,可能导致精度缺失
计算机底层以补码的方式储存数据
原码:第一位为符号位:0为正数,1为负数
反码:将原码除符号位外,各个位取反
补码:将反码+1
标识符
命名规则
数字不可以开头不可以使用关键字和保留字(可以包含)不能包含空格键
命名规范
包名:多单词组成时所有字母都小写类名,接口名:多单词组成时所有单词的首字母大写变量名,方法名:多单词组成时,第一个单词首字母小写, 第二个单词开始每个单词首字母大写常量名:所有字母都大写,多个单词间下划线连接
使用
凡是可以自己起名字的地方都叫标识符
关键字
定义
被赋予特殊含义的字符串。所有字母都为小写。关键字后不能声明执行语句。
break与continue关键字:
break:①使用范围:switch-case;循环结构②作用:结束当前循环。
continue:①使用范围:循环结构②作用:结束当次循环。
运算符
逻辑运算符
| 与 ||相同点:运算结果相同, 当符号左边为false时,都执行右边的运算不同点:当符号左边为true时,| 执行右边运算,|| 不执行推荐使用: ||
&与&&相同点:运算结果相同, 当符号左边为true时,都执行右边的运算不同点:当符号左边为false时,&执行右边运算,&&不执行推荐使用: &&
位运算符
<<: 在一定范围内,每向左移一位,相当于*2>>:在一定范围内,每向右移一位,相当于/2
三元运算符
结构:(条件表达式)?表达式1:表达式2说明:①结果为boolean型 ②条件表达式为true执行表达式1 条件表达式为false执行表达式2注意:可以嵌套使用,可以改写为if-else
补充
获取一个随机数:公式:[a,b] : (int)(Math.random()*(b-a+1)+a)
流程控制
一、switch-case结构
①结构:int 变量 switch(变量){ case 常量: break case 常量 ... default}②执行过程:根据switch表达式中的值依次匹配case中的常量 匹配成功,执行相应语句,然后继续匹配,直到 遇到break关键字或结构末尾结束为止 ③break:执行到此关键字,跳出结构;是可选择的 ④case后只能声明常量,不能声明范围 ⑤default:相当于if-else中的else,是可选择的且位置是可选的
二、for循环
①:初始化条件 ②:循环条件(布尔类型) ③:循环体 ④:迭代条件①结构: for(①;②;④){ ③ }②执行过程:①-②-③-④-②-③-④........-②
不限制次数的结构:for(;;)
三、while循环
①结构: while(②){ ③; ④; }②执行过程:①-②-③-④-②-③-④-...-②③注意:不能没有迭代条件,缺失迭代条件就可能导致死循环
不限制次数的结构:while(true)
四、do-while循环
①结构 : do{ ③; ④; }while(②);②执行过程:①-③-④-②-③-④-......-②③注意:此循环至少会执行一次循环体,且较少使用。
数组
数组的理解:
数组是多个相同类型数据按一定顺序排列的集合。
数组的特点:
①数组是有序排列的。②数组属于引用数据类型的变量。 数组的元素,既可以是基本数据类型,也可以是引用数据类型。③数组的长度一旦确定,就不能修改。
数组的分类:
①按照维数:一维数组,二维数组.....②按照数组元素的类型:基本数据类型元素的数组,引用数据类型元素的数组
一维数组的初始化:
①静态初始化:数组的初始化和数组元素的赋值操作同时进行 a = new int[ ]{ 1,2,3};②动态初始化:数组的初始化和数组元素的赋值操作分开进行 String [ ] a = new string [ 5 ] ;
注意:数组一旦初始化完成,其长度就确定了
数组长度的获取:
属性: length数组长度:a.length
一维数组元素的默认初始化值:
①整型:0②浮点型: 0.0③char型: 0或' \u0000',而非‘0’④boolean :false⑤引用数据类型: null
二维数组的初始化
①静态初始化:int [ ] [ ] a = new int [ ] [ ] { { 2 , 5, 8 } , { 7, 8 } }; ②动态初始化:动态初始化一:String [ ] [ ] a = new String [ 2 ][ 6 ]动态初始化二:String [ ] [ ] a = new String [ 2 ][ ]
注意:二维数组也可以写为:int [ ] a [ ]
数组的遍历
方法:for(int i = 0 ; i < a.length ; i++ )
二维数组的默认初始化值
动态初始化一:外层元素的初始化为:地址值内层元素的初始化为:与一维数组初始化值相同动态初始化二:外层元素的初始化为:null内层元素的初始化为:不能调用,否则报错
规定:二维数组分为外层数组的元素和内层数组的元素。外层元素:arr[ 0 ] , arr[ 1 ]等内层元素:arr[ 0 ][ 0 ] , arr[ 1 ] [ 2 ]等
数组中的算法
数组的复制
方法:String [ ] b = new String [ a.length ];for( int i = 0 ; i < b.length ; i++){ b [ i ] =a [ i ] ;}
注意:不能写为 b = a ;
数组的反转
方法一:for(int i = 0;i<a.length / 2;i++){ String temp =a[i]; a[i]=a[a,length-i-1]; a[a.length-i-1]=temp; }
方法二:for(int i = 0,j=a.length-1;i<j;i++,j--){ String temp =a[i]; a[i]=a[j]; a[j]=temp; }
数组的查找(或搜索)
一、线性查找int [ ] arr = new int [ ] ;String a="bb"; boolean isFlag=ture; for(int i=0;i<arr.length;i++){ if(a.equals(arr[i])){ System.out.println("找到了指定的元素,位置为:"+i); isFlag=false; break; } } if(isFlag){ System.out.println("没有找到"); }
二、二分法查找:int[] i=new int[] {-36,-11,0,5,9,16,33,56};int a = -11;//查找对象int head = 0;//初始的首索引int end =i.length-1;//初始的末索引boolean isFlag =true;while(head<=end) { int middle =(head+end)/2; if(a==i[middle]) { System.out.println("找到了指定的元素,位置为"+middle); isFlag=false; break; }else if(i[middle]>a){ end =middle-1; }else{ head =middle+1;} } if(isFlag) { System.out.println("没有找到"); } }}