本文共 7550 字,大约阅读时间需要 25 分钟。
数据类型 | 关键字 | 占用内存(字节) | 取值范围 |
---|---|---|---|
整数 | byte | 1 | -128 ~ 127 |
整数 | short | 2 | -32768 ~ 32767 |
整数 | int | 4 | -231 ~ 231-1 |
整数 | long | 8 | -263 ~ 263-1 |
浮点数 | float(单精度) | 4 | 1.401298e-45 ~ 3.402823e+38 |
浮点数 | double(双精度) | 8 | 4.9000000e-324 ~ 1.797693e+308 |
字符 | char | 2 | 0 ~ 65535 |
布尔 | boolean | 1 | true、false |
注:e+38表示乘以10的38次方;
int a = 10; //需要初始化变量float b = 12.3F; //加上F标识符long c = 1234569L; //加入L标识符
小驼峰命名法:
大驼峰命名法:
打印后换行
System.out.println("打印内容"); //打印后换行
打印后不换行
System.out.print("打印内容"); //打印后不换行
实例
Scanner sc = new Scanner(System.in);int num = sc.nextInt();//调用方法接收整形输入String s = sc.next();//调用方法接收字符串String s = sc.nextLine();//调用方法接收字符串
略【后来我忘了要写啥了 [・_・?] 】
int a = 10;double b;b = a;//可以直击赋值
byte—short/char—int—long—float—double
int k = (int)88.88;
注意:强制类型转换可能会造成精度损失;
byte、short、char三种数据类型在运算时,不管是否有更高的数据类型,都会先提升为int数据类型在进行计算;
例如:
byte a=3,b=4;byte c;c=a+b; //这条语句运行就会出现错误,因为运算过程中a、b提升为int类型了,再赋值给c造成数据损失。c=(byte)(a+b); //强制转换就不报错了,但是数据损失不会改变。
举例:
byte d;d = 3+7;//这句话不会报错
常量优化机制:在编译时,会先将3+4计算出结果7,然后自动判断该结果是否在byte取值范围内,在,就通过编译,不在,编译失败报错。
符号 | 作用 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
++ | 自增运算符 |
- - | 自减运算符 |
System.out.println(10/3); //=3,整数 / 整数 = 整数System.out.println(10.0/3); //=3.333333333,浮点数 / 整数 = 浮点数;System.out.println(10/3.0); //=3.333333333,整数 / 浮点数 = 浮点数;
System.out.println("abcd"+"1234"); //输出:abcd1234System.out.println(1+99+"年"); //输出:100年System.out.println("5+5="+2+8); //输出:5+5=28System.out.println("5+5="+(2+8)); //输出:5+5=10
符号 | 计算方式 |
---|---|
& | 遇0为0,两边都是1才是1 |
| | 遇1为1,两边都是0才是0 |
~ | 0变1,1变0 |
<< | 有符号左移运算,左边符号位丢弃,右边补齐0 |
>> | 有符号右移运算,根据符号位补齐左边 |
>>> | 有符号右移运算,左边补齐0 |
异或运算的特点:一个数被另一个数异或两次,该数本身不变;
例:
/**不允许使用第三个变量,交换两个变量的值*/int a=10;int b=20;a=a^b; //a = 10^20;b=b^a; //b = 20^10^20 = 10^20^20 = 10; a=a^b; //a = 10^20^10 = 20^10^10 = 20;System.out.println(a);System.out.println(b);
符号 | 作用 |
---|---|
= | 赋值 |
+= | 加后赋值 |
-= | 减后赋值 |
*= | 乘后赋值 |
/= | 除以后赋值 |
%= | 取余后赋值 |
注意:扩展赋值运算符隐含了强制类型转换;
short ss = 1;ss = (short)(ss+1); //short类型在运算时会先提升为int类型,所以计算结果需要强制类型转换后才可以赋值给ssss +=1; //等价于 ss = (short)(ss+1);
符号 | 作用 |
---|---|
== | 是否等于 |
!= | 是否不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
关系运算符的运算结果只有true和false;
符号 | 作用 |
---|---|
& | 与:并且 |
| | 或:或者 |
! | 非:取反 |
^ | 异或:相同为false,不同为true |
符号 | 作用 |
---|---|
&& | 短路与 |
|| | 短路或 |
格式 | 作用 |
---|---|
关系表达式 ? 表达式1 : 表达式2; | 首先计算表达式的值,如果为true,取值表达式1;如果为false,取值表达式2 |
int a=10;int b=20;int max = a>b ? a:b; //输出 b 的值 20int min = a>b ? b:a; //输出 a 的值 10
格式一示例:
if(/*关系表达式*/){ ;//语句体}
格式二示例:
if(/*关系表达式*/){ ;//语句体}else{ ;//语句体}
格式三示例:
if(/*判断条件一*/){ ;//语句体}else if(/*判断条件二*/){ ;//语句体}else{ ;//语句体}
格式:
switch(/*表达式*/){ case /*值1*/: /*语句1*/ ; break; case /*值2*/: /*语句2*/ ; break; //…… case /*值n*/: /*语句n*/ ; break; default: /*语句n+1*/ ; break;}
注意:case: 后面的值只能你是常量不能是变量;
如果switch语句中,case后面省略了break语句,就会开始case穿透;
现象:当开始case穿透,后的case就不在具有匹配效果,内部的语句都会执行,直到看到break语句或者将整个switch语句执行完毕才会结束;
应用实例:
switch(week){ case 1: case 2: case 3: case 4: case 5:System.out.println("今天为工作日");break; case 6: case 7:System.out.println("今天为工作日");break; default:System.out.println("数据输入有误!");break; }
格式示例:
for(int i=0; i<8; i++){ ;//循环语句}
应用实例:
int i = 0;while(i<=100){ System.out.println("I love you."); i++;}
注:一般不确定循环次数的循环过程使用while语句;
应用实例:
int i = 0;do{ System.out.println("I love you."); i++;}while(i<=100)
无论条件是否满足,都至少会执行一次循环体中的内容;
应用实例:
for(int i=0; i<8; i++){ if(i==4){ continue;//当i等于4的时候不执行后面的循环语句,结束本次循环 } System.out.println("电梯到"+ i + "层了。");}
for(int i=0; i<8; i++){ if(i==4){ break;//当i等于4的时候跳出循环语句,终止整个循环语句 } System.out.println("电梯到"+ i + "层了。");}
注释:上面的实例,当i等于4的时候跳出for循环体,如果for外面在套一或几层循环语句时,它只能跳出for循环,跳不出外层的while循环体或更多循环体;
为了解决这个问题,可以给外层 的循环体起一个名字,在使用break语句时,后面加上循环体名字,即可跳出指定的外层循环体;
应用实例:
lo:while(true){ //给循环体起个名字 for(int i=0; i<8; i++){ if(i==4){ break lo;//当i等于4的时候跳出循环语句,跳出指定名为lo的循环体,即while循环体。 } System.out.println("电梯到"+ i + "层了。"); }}
应用实例:
import java.util.Random; //导包public class DemoRandom{ public static void main(String[] args){ //创建对象 Random r = new Random(); for(int i=0;i<10;i++){ //获取随机数 int num = r.nextInt(10)+1;//获取[1,10]闭区间的随机数 System.out.println(num); } }}
格式一
格式二
示例代码:
int[] arr; //创建一个名为arr的int类型数组char cArr[]; //创建一个名为cArr的char类型数组
注:这里只是创建了数组类型的变量,并没有初始化,直接使用会报错!
格式
示例代码:
int[] arr = new int[10];//通过new关键字,创建一个int类型的数组容器,该容器可以存储10个int类型的数据
格式
简化格式
示例代码:
int[] arr = new int[]{ 11,22,33};int[] arr1 = { 44,55 66};
格式
示例代码:
int[] arr = new int[]{ 11,22,33};int a = arr.length;//获取元素个数
格式一
格式二
格式三
示例代码:
int[][] arr; //创建一个名为arr的int类型二维数组char cArr[][]; //创建一个名为cArr的char类型二维数组int[] iArr[]; //创建一个名为iArr的int类型二维数组
格式
示例代码:
int [][] arr = new int[3][4];//定义一个三行四列的二维数组
完整格式
数据类型[][] 变量名 = new 数据类型[][]{ {数据1,数据2,…},{数据1,数据2,…},…,{数据1,数据2,…}};简化格式
数据类型[][] 变量名 = { {数据1,数据2,…},{数据1,数据2,…},…,{数据1,数据2,…}};示例代码
int[][] arr = new int[3][3]{ { 11,12,13},{ 21,22,23},{ 31,32,33}};int[][] arr1 = { { 11,12,13},{ 21,22,23},{ 31,32,33}};
应用实例:
//定义一个二维数组int[][] arr1 = { { 11,12,13,14},{ 11,12,13,14},{ 11,12,13,14}};int le;le= arr1.length;System.out.println(le);//输出3,表示3个一维数组le = arr1[1].length;System.out.println(le);//输出4,表示第二个一维数组中有4个元素
实例代码:
int[] arr1 = { 11,12,13};int[] arr2 = { 21,22,23};int[] arr3 = { 31,32,33};int[][] arr = new int[3][3];arr[0] = arr1;arr[1] = arr2;arr[2] = arr3;
定义
方法使用须知
定义示例:
public static void eat(){ System.out.println("吃饭方法");}
调用示例:
public static void main(){ eat();//调用方法}
进制 | 格式 | 举例 |
---|---|---|
二进制 | 0b开头 | 0b10 |
八进制 | 0开头 | 070 |
十进制 | 默认 | 98 |
十六进制 | 0x开头 | 0xa5 |
转载地址:http://exmsz.baihongyu.com/