常量与变量
java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间。
在java中,整数默认为int型,所以:byte b=3; b=b+2; 第一句不错,第二句会出错。因为java是强类型语言。应改为:byte b=3; b=(byte)(b+2);
小数默认为double型,所以:float f=2.3; 会出错。应为:float f=2.3f;
布尔类型值为:true和false
boolean b1=true; boolean b2=false;
运算符
算术运算符 如:+,-
赋值运算符 如:=,+=
比较运算符 如:==,!=,<,>,
逻辑运算符 如:&,|,!,^(异或),&&,||
位运算符 如:<<,>>,>>>,&,|,^,~
三元运算符 为:(条件表达式)?x:y
算术运算符
字符串数据和任何数据使用“+”相连接,最终都会变成字符串。
转义字符
通过'\'来转变后面字母或者符号的含义。如:\n:换行;\b:退格,相当于backspace。\r:回车键;\t:制表符,相当于tab键。
在linux中换行由一个字符表示:\n
在windows中,换行,回车符是由两个字符来表示:\r\n
在dos里,可直接识别\n
char c='我'; 这样在java中是可以的,因为char为两个字节,而一个汉字也为两个字节。
赋值运算符
short s=4; //没有错,4为整型,s为short型,只要右侧数在short的范围内,赋值运算符会自动完成类型转换。
s=s+5; //会出错,因s+5时,s会转换变为int型,与int型5相加,结果为int型,此时将int型赋给short型变量s,会装不下,易精度丢失,所以会出错。
s+=5; //不会出错,因为+=是一个赋值运算符,负责赋值,内部会自动转换。
逻辑运算符
作用:用于连接boolean类型的表达式
&和&&的区别:
&:无论左边是true还是false,右边都运算。
&&:当左边为false时,右边不运算了。
| 和|| 的区别:
|:两边都参与运算。
||:当左边为true,右边不运算。
位运算符
>>: 最高位补什么,由原有数据的最高位决定,
如果最高位为0,右移后,用0补;
如果最高位为1,右移后,用1补。
>>>: 无论最高位是什么,右移后,都用0补。
3<<2; 表示左移2位,右边补0,结果为3*4=12;
6>>2; 表示右移2们,左边补0,结果为6/4=1;
-6>>2; 表示左边最高位补什么,和原来最高位的值相同。
取反:~6=-7;
7^4^4=7; 一个数异或同一个数两次,结果还是那个数。
程序流程控制
顺序结构
判断结构 如: if语句
选择结构
循环结构
if...else语句与三元运算符的区别
三元运算符,
好处:可以简化if...else代码
弊端:因为只要是运算符,运算完必须要有一个结果,而输出语句是输出到终端,没有结果。
数组
数组定义:
格式1:
元素类型[] 数组名=new 元素类型[元素个数或数组长度]
如:int[] x= new int[3];
数组名x不是int型,为数组类型,即引用类型。
栈区:数据使用完毕,会自动释放。
堆区:1. 如new分配的空间,由垃圾回收机制释放,不需程序员自己释放(优于c++)。2. 堆内存中分配好的内存有默认值,int型默认为0,float默认为0.0,double默认为0.0,布尔类型默认为false。
格式2,静态初始化:
元素类型[] 数组名 = new 元素类型[]{元素,元素,... ...}
如:int[] arr = new int[]{1,2,3,4}; 或 int[] arr = {3,5,1,7}
冒泡排序:相邻的两个元素进行比较,如条件符合换位,第一圈比较完,最值出现在最后位。
排序算法中,效率最高的是希尔排序