第三章、JAVA数据类型
3-1、Java数据类型划分
整型(byte short int long)
数值型
浮点型(float double)
基本数据类型 字符型(char)
布尔型(boolean)
数据类型
类(class)
引用数据类型 接口(interface)
数组(array)
Java基本数据类型
数据类型 | 大小/位 | 可表示的数据范围 | |
1 | long(长整数) | 64 | -9223372036854775808~9223372036854775807 |
2 | int(整数) | 32 | -2147483648~2147483647 |
3 | short(短整数) | 16 | -32768~32767 |
4 | byte(位) | 8 | -128~127 |
5 | char(字符) | 2 | 0~255 |
6 | float(单精度) | 32 | -3.4E38(-3.4 * 10 ^38)~ 3.4E38(-3.4 * 10 ^38) |
7 | double(双精度) | 64 | -1.7E308(-1.7 * 10^308)~ 1.7E308(-1.7 * 10^308) |
一个数据有自己的保存范围,超过长度,则编译的时候就会出现错误。
常用的转义字符
转义字符 | 描述 | 转义字符 | 描述 | ||
1 | \f | 换页 | 5 | \\ | 反斜线 |
2 | \b | 倒退一格 | 6 | \’ | 单引号 |
3 | \r | 归位 | 7 | \ | 双引号 |
4 | \t | 制表符Tab | 8 | \n | 换行 |
布尔类型:
布尔(boolean)类型的变量,只有true(真) 和false(假)两种,当将一个变量定义成布尔类型时,它的值只能是true 或 false ,除此之外没有其他的值可以赋值给这个变量。
boolean flag=true; //声明布尔变量flag,并赋值为true
基本数据类型的默认值
数据类型 | 默认值 | |
1 | byte | (byte)0 |
2 | short | (short)0 |
3 | int | 0 |
4 | long | 0L |
5 | float | 0 .0f |
6 | double | 0.0d |
7 | char | \u0000(空, ) |
8 | boolean | false |
Java的数据类型在定义时就已经确定了,因此不能随意转换成其他的数据类型,但Java允许用户有限度地做类型转换处理,数据类型的转换方式可分为自动类型转换及强制类型转换两种。
- 数据类型的自动转换:在程序中已经定义好了数据类型的变量,若是想用另一种数据类型时,java会在下列的条件皆成立时,自动做数据类型的转换:
- 转换前的数据类型与转换后的类型兼容。
- 转换后的数据类型的表示范围比转换前的类型大。
- 数据类型的强制转换:当两个整数进行运算时,其运算的结果也会是整数。比如:当做整数除法8/3的运算时,其结果为整数2,并不是实际的2.3333……,因此在java中若想得到计算的结果是浮点数时,就必须将数据类型做强制性的转换,转换的语法如下:
(欲转换的数据类型)变量名称;
3-2、运算符、表达式
Java中的语句有很多种形式,表达式就是其中一种形式。表达式是由操作数与运算符所组成:操作数可以是常量、变量也可以是方法,而运算符就是数学中的运算符号,如+、-、*、/、%等。
一元运算符
一元运算符 | 描述 | |
1 | + | 正号 |
2 | – | 负号 |
3 | ! | NOT,否 |
!表示取反操作,简单的说就是将true变为false,将false变为true。
算术运算符
算术运算符 | 描述 | |
1 | + | 加法 |
2 | – | 减法 |
3 | * | 乘法 |
4 | / | 除法 |
5 | % | 取模(取余数) |
关系运算符
关系运算符 | 描述 | |
1 | > | 大于 |
2 | < | 小于 |
3 | >= | 大于等于 |
4 | <= | 小于等于 |
5 | == | 等于 |
6 | != | 不等于 |
一般以上的操作符都会结合if语句使用,在if语句中可以接收布尔类型的数据进行判断。
递增与递减运算符
自增与自减运算符 | 描述 | |
1 | ++ | 自增,变量值加1 |
2 | — | 自减,变量值减1 |
写在后面表示先使用变量之后再进行自增或自减操作,如果是写在前面,则先进行自增或自减的操作。
例:
int num=5;
num1=num++; //先将num的值赋给num1,然后num再自增,num1=5,num=6
num2=++num; //先将num自增1,然后再将num的值赋给num2,num=7,num2=8
逻辑运算符
逻辑运算符 | 描述 | |
1 | & | AND,与 |
2 | && | 短路与 |
3 | | | OR,或 |
4 | || | 短路或 |
不管是短路还是非短路,其基本的操作结果是一样的。
使用与操作的时候,要求前后几个表达式的内容都是true最终结果才是true,如果有一个是false,则最终结果就是false。
使用或操作的时候,要求前后几个表达式只要有一个true则最终结果就是true,如果全部是false,则最终结果才是false。
AND及OR结果表
条件1 | 条件2 | 结果 | ||
&&(与) | ||(或) | |||
1 | true | true | true | true |
2 | true | false | false | true |
3 | false | true | false | true |
4 | false | false | false | false |
关于&&与&、||与|的说明:
&&表示短路与,对于与来说,要求所有的条件都判断,而如果使用短路与如果第一个条件为false,则后面的条件将不再判断。
||表示短路或,对于或来说,要求所有的条件都判断,而如果使用短路或如果第一个条件为true,则后面的条件将不再判断。
位运算符
逻辑运算符 | 描述 | |
1 | & | 按位与 |
2 | | | 按位或 |
3 | ^ | 异或(相同为0,不同为1) |
4 | ~ | 取反 |
5 | << | 左移位 |
6 | >> | 右移位 |
7 | >>> | 无符号右移位 |
位运算的结果表
二进制数 | 二进制数 | 与操作(&) | 或操作(|) | 异或操作(^) | |
1 | 0 | 0 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 1 | 1 |
3 | 1 | 0 | 0 | 1 | 1 |
4 | 1 | 1 | 1 | 1 | 0 |
左移和右移:
在java中也提供了左移及右移两种操作:
- 左移操作是将运算数的二进制码整体左移指定位数,左移之后的空位使用0来填充。
- 右移操作是将运算数的二进制码整体右移,右移之后空出来的位置以符号位填充。如果是整数使用0填充,如果是负数使用1填充。
无符号右移:将以0填充空出来的位。
运算符的优先级
优先级 | 运算符 | 类 | 结合性 |
1 | () | 括号运算符 | 由左至右 |
1 | [ ] | 方括号运算符 | 由左至右 |
2 | !、+(正号)、-(负号) | 一元运算符 | 由右至左 |
2 | ~ | 位逻辑运算符 | 由右至左 |
2 | ++、– | 递增与递减运算符 | 由右至左 |
3 | *、/、% | 算术运算符 | 由左至右 |
4 | +、- | 算术运算符 | 由左至右 |
5 | <<、>> | 位左移、右移运算符 | 由左至右 |
6 | >、>=、<、<= | 关系运算符 | 由左至右 |
7 | = =、= | 关系运算符 | 由左至右 |
8 | &(位运算符AND) | 位逻辑运算符 | 由左至右 |
9 | ^(位运算符XOR) | 位逻辑运算符 | 由左至右 |
10 | |(位运算符OR) | 位逻辑运算符 | 由左至右 |
11 | && | 逻辑运算符 | 由左至右 |
12 | || | 逻辑运算符 | 由左至右 |
13 | ?: | 三目运算符 | 由右至左 |
14 | = | 赋值运算符 | 由右至左 |
在java中还有一些简单的运算符及表达式的使用:
- += ,表示两个内容相加后再赋给指定的变量;
- -= ,表示两个内容相减后再赋给指定的变量;
- *= ,表示两个内容相乘后再赋给指定的变量;
- /= ,表示两个内容相除后再赋给指定的变量;
- %= ,表示两个内容取模后再赋给指定的变量;
简洁表达式的范例
运算符 | 范例 | 执行前 | 说明 | 执行后 | |||
a | b | a | b | ||||
1 | += | a+=b | 12 | 3 | a+b的值存放到a 中(同a=a+b) | 15 | 3 |
2 | -= | a-=b | 12 | 3 | a-b的值存放到a 中(同a=a-b) | 9 | 3 |
3 | *= | a*=b | 12 | 3 | a*b的值存放到a 中(同a=a*b) | 36 | 3 |
4 | /= | a/=b | 12 | 3 | a/b的值存放到a 中(同a=a/b) | 4 | 3 |
5 | %= | a%=b | 12 | 3 | a%b的值存放到a 中(同a=a%b) | 0 | 3 |
6 | b|| | a*=b|| | 12 | 3 | a*b的值存放到a 后,b加1(同a=a*b;b||) | 36 | 4 |
7 | ++b | a*=++b | 12 | 3 | b加1后,再将a*b的值存放到a(同b++;a=a*b) | 48 | 4 |
8 | b– | a*=b– | 12 | 3 | a*b的值存放到a 后,b 减1(同a=a*b;b–) | 36 | 2 |
9 | –b | a*=–b | 12 | 3 | b减1后,再将a*b的值存放到a(同b–;a=a*b) | 24 | 2 |
表达式类型的转换:
当java发现程序的表达式中有类型不相符的情况时,会依据下列的规则来处理类型的转换:
- 占用字节较少的类型转换成占用字节较多的类型;
- 字符类型会转换成int类型;
- int类型会转换成float类型;
- 表达式中若某个操作数的类型为double,则另一个操作数字也会转换成double类型;
- 布尔类型不能转换成其他类型。
3-2、判断与循环语句
3-2-1、程序的结构
一般来说程序的结构包含有下面三种:
1、顺序结构 2、选择结构 3、循环结构
顺序结构:程序至上而下逐行执行,一条语句执行完之后继续执行下一条语句,一直到程序的末尾。
选择结构:根据条件的成立与否,再决定要执行哪些语句。
循环结构:根据判断条件的成立与否,决定程序段落的执行次数,而这个程序段落就称为循环主体。
三目运算符:使用三目运算符时操作数有3个,其格式如下:
变量条件判断?表达式1:表达式2
switch语句:
要在许多的选择条件中找到并执行其中一个符合判断条件的语句时,除了可以使用if..else不断地判断之外,也可以使用另一种更方便的方式即多重选择—switch语句,语法格式如下:
switch(表达式){ //表达式中只能使用数字或字符
case 选择值1: 语句主体1;break;
case 选择值2: 语句主体2;break;
……
case 选择值n: 语句主体n;break;
default: 语句主体;
}
while循环结构:也是条件判断语句。当事先不知道循环该执行多少次的时候,就要用到while循环。格式如下:
while(循环条件判断){
语句1;
语句2;
……
语句n;
循环条件更改;
}
do…while循环语句:也是用于末知循环执行次数的时候,而while循环及do…while循环最大不同就是进入while循环前,while语句会先测试判断条件的真假,再决定是否执行循环主体,而do…while循环则是先做再说,每次都是先执行一次循环主体,然后再测试判断条件的真假,所以无论循环成立的条件是什么,使用do…while循环时,至少都会执行一次循环主体,语句格式如下:
do{
语句1;
语句2;
……
语句n;
循环条件改变;
}while(循环条件判断);
for循环结构:对于while和do…while两种循环来讲,操作时并不一定非要明确的知道循环的次数,而如果开发者已经明确的知道了循环次数的话,那么就可以使用另外一种循环语句—for循环。语法格式如下:
for(赋值初值;判断条件;赋值增减量){
语句1;
语句2;
……
语句n;
}
break语句:可以强迫程序中断循环,当程序执行到break语句时,即会离开循环,继续执行循环外的下一个语句,如果break语句出现在嵌套循环中的内层循环,则break语句只会跳出当前层的循环。
continue语句:可以强迫程序跳到循环的起始处,当程序运行到continue语句时,即会停止运行剩下的循环主体,而是回到循环的开始处继续运行。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容