| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> JavaSE之数据类型和运算符的总结 -> 正文阅读 |
|
[Java知识库]JavaSE之数据类型和运算符的总结 |
目录 一、数据类型1.变量和类型
变量指的是程序运行时可变的量
.
相当于开辟一块内存空间来保存一些数据
类型则是对变量的种类进行了划分
,
不同的类型的变量具有不同的特性
2.整型类型int(1)基本语法形式:int 变量名 = 初始值; (2)没有所谓的无符号类型,统一都是有符号的,一个 int 变量占 4 个字节,和操作系统没有直接关系。第一位为符号位,其余31位为数值位,所以int的大小范围:-2^31 -> 2^31-1,即-2147483648~2147483647。如果运算的结果超出了 int 的最大范围, 就会出现溢出的情况。
编译运行该代码,输出如下:? ?3.长整型long(1)基本语法形式:long?变量名 = 初始值;建议初值加一个后缀L或l,如:10L或10l (2)long 类型占 8 个字节. 表示的数据范围 -2^63 -> 2^63-1
4.双精度浮点型变量double
(1)基本语法形式:double?变量名 = 初始值;
(2)
Java
中的
double
虽然也是
8
个字节
,
但是浮点数的内存布局和整数差别很大
,
不能单纯的用
2 ^ n
的形式表示数据范
围
.J
ava
的
double
类型的内存布局遵守
IEEE 754
标准
(
和
C
语言一样
),
尝试使用有限的内存空间表示可能无限的小数
,
势
必会存在一定的精度误差
.
5.单精度浮点型变量float(1)基本语法形式:double?变量名 = 初始值;建议初值加一个后缀F或f,如:10.1F或10.1f
(2)
float
类型在
Java
中占四个字节
,
同样遵守
IEEE 754
标准
.
由于表示的数据精度范围较小
,
一般在工程上用到浮点数都
优先考虑
double,
不太推荐使用float
6.字符类型变量char(1)基本语法形式:char 变量名 = 初始值; (2)Java 中使用 单引号 + 单个字母 的形式表示字符字面值. (3)计算机中的字符本质上是一个整数. 在 C 语言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符. 因此一 个字符占用两个字节, 表示的字符种类更多, 包括中文.使用一个字符表示一个汉字,如:char ch = '呵'; 7.字节类型变量byte
(1)基本语法格式
: byte 变量名
=
初始值
;
(2)
字节类型表示的也是整数
.
只占一个字节
,
表示范围较小
(
-
128
-
> +127
)
(3)
字节类型和字符类型互不相干
8.短整型变量short(1)基本语法格式: byte 变量名 = 初始值; (2)short 占用 2 个字节, 表示的数据范围是 -32768 -> +32767。这个表示范围比较小, 一般不推荐使用。 9.布尔类型变量boolean(1)基本语法格式: boolean 变量名 = 初始值; (2)boolean 类型的变量只有两种取值, true 表示真, false 表示假 (3)Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法
编译运行该代码,会发现编译错误。value的类型是boolean,1的类型是int。? (4)boolean 类型有些 JVM 的实现是占 1 个字节, 有些是占 1 个比特位, 这个没有明确规定。假设有一条4选1的选择题题,这时要去看其他3项有无明显错误 10.字符串类型变量
(1)基本语法格式
: String 变量名
= "
初始值";
(2)
Java
使用
双引号
+
若干字符
的方式表示字符串字面值
. 如:String str = "Hello";
(3)
和上面的类型不同
, String
不是基本类型
,
而是
引用类型
(4)
字符串中的一些特定的不太方便直接表示的字符需要进行转义
(5)字符串使用“+”表示字符串的拼接(当一个 + 表达式中存在字符串的时候, 都是执行字符串拼接行为) System.out.println("hello"+"world");//helloworld 字符串和其他数据类型使用“+“拼接,结果就是一个字符串,如: System.out.println("hello"+10+20);//hello1020 但是也有一些特例: System.out.println(10+20+"hello");//30hello? 这是因为括号里的式子从左往右计算,所以会先加起来等于30再与hello拼接为30hello 那么如何才能打印出hello30和1020hello呢? System.out.println("hello"+(10+20));//hello30? ?加一个括号,就会先进行加法,再进行拼接啦 System.out.println(10+""+20+"hello");//1020hello? ?""是一个空字符串,10+""就拼接为一个字符串"10","10"再和20拼接为字符串"1020",最后"1020"与"hello"拼接为“1020hello” 11.变量的作用域
也就是该变量能生效的范围
,
一般是变量定义所在的代码块
(
大括号
)
12.变量的命名规则
(1)一个变量名只能包含数字
,
字母
,
下划线
(2)数字不能开头.
(3)变量名是大小写敏感的. 即
num
和
Num
是两个不同的变量
.
注意
:
虽然语法上也允许使用中文
/
美元符
($)
命名变量
,
但是
强烈
不推荐这样做
一些建议:
(1)变量命名要具有描述性
,
见名知意
.
(2)变量名不宜使用拼音
(
但是不绝对
).
(3)变量名的词性推荐使用名词
.
(4)变量命名推荐
小驼峰命名法
,
当一个变量名由多个单词构成的时候
,
除了第一个单词之外
,
其他单词首字母都大写.
13.常量?常量指的是运行时类型不能发生改变。常量主要有以下两种表现形式: (1)字面值常量
10? ? ? ? ? ? ? ?// int
字面值常量
(
十进制
)
010? ? ? ? ? ? ?// int
字面值常量
(
八进制
)
由数字
0
开头
. 010
也就是十进制的
8
0x10? ? ? ? ? ?// int
字面值常量
(
十六进制
)
由数字
0x
开头
. 0x10
也就是十进制的
16
10L? ? ? ? ? ? ?// long
字面值常量
.
也可以写作
10l (
小写的
L)
1.0? ? ? ? ? ? ? // double
字面值常量
.
也可以写作
1.0d
或者
1.0D
1.5e2? ? ? ? ? // double
字面值常量
.
科学计数法表示
.
相当于
1.5 * 10^2
1.0f? ? ? ? ? ? ?// float
字面值常量
,
也可以写作
1.0F
true? ? ? ? ? ? // boolen
字面值常量
,
同样的还有
false
'a'? ? ? ? ? ? ? ?// char
字面值常量
,
单引号中只能有一个字符
"abc"? ? ? ? ? // String
字面值常量
,
双引号中可以有多个字符
(2)final
关键字修饰的常量
不能在程序运行过程中发生修改.
14.类型转换
Java
作为一个强类型编程语言
,
当不同类型之间的变量相互赋值的时候
,
会有教严格的校验
(1)
int
和
long/double
相互赋值
不同数字类型的变量之间赋值
,
表示范围更小的类型能隐式转换成范围较大的类型
,
反之则不行
(2)int 和 boolean 相互赋值?
int
和
boolean
是毫不相干的两种类型
,
不能相互赋值
(3)int字面值常量 给 byte 赋值
使用字面值常量赋值的时候
, Java
会自动进行一些检查校验
,
判定赋值是否合理
强制类型转换:
(1)强制类型转换可能会导致精度丢失
(2)强制类型转换不是一定能成功
,
互不相干的类型之间无法强转
15.数值提升(1)int和long的混合运算
CPU在进行>4byte的数据的运算时,会将范围小的数据提升为范围大的数据,如上面的代码,当 int 和 long 混合运算的时候, int 会提升成 long, 得到的结果仍然是 long 类型, 需要使用 long 类型的变量来接收结果. 如果非要用 int 来接收结果, 就需要使用强制类型转换 (2)byte和byte的运算
?由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short 这种低于4个字节的类型, 会先提升成 int, 再参与计算 可以修改为byte c = (byte)(a+b); 16.int和string的相互转换int---->String valueOf() 方法用于返回给定参数的原生 Number 对象值,参数可以是原生数据类型, String等
String------>int
总结:? ?二、运算符1.算术运算符(1)基本运算符? +? -? *? /? % 这里值得注意的是/和%: 对于/:int/int=int,诸如1/2这样的计算要用double;0不能作除数,否则会抛出异常,后面的代码都不会执行 对于%:不仅仅可以对 int 求模, 也能对 double 来求模。注意以下3个式子: ? ? ? ? ? ? ? -10%3? ? ?10%-3? ? ?-10%-3,没错它们的答案分别是-1,1,-1 (2)增量赋值运算符 += -= *=? /= %=
可以看到增量赋值运算符会完成自动类型转换 (3)自增/自减运算符? ?++/?--
①如果不取自增运算的表达式的返回值
,
则前置自增和后置自增没有区别
.
②如果取表达式的返回值
,
则前置自增的返回值是自增之后的值
,
后置自增的返回值是自增之前的值
2.关系运算符关系运算符主要有:==? ? ?!=? ? <? ? ?>? ? ?<=? ? ? >=
关系运算符的表达式返回值都是
boolean
类型
3.逻辑运算符
逻辑运算符的操作数
(
操作数往往是关系运算符的结果
)
和返回值都是boolean
逻辑运算符主要有? ?&&? ? ? ||? ? ? ?!
表达式1&&表达式2:表达式1和表达式2均为布尔表达式? ? ? ?
两个操作数都为
true,
结果为
true,
否则结果为
false
表达式1||表达式2:表达式1和表达式2均为布尔表达式? ? ? ? ??
两个操作数都为
false,
结果为
false,
否则结果为
true
!表达式:表达式为布尔表达式? ??
操作数为
true,
结果为
false;
操作数为
false,
结果为
true(
这是个单目运算符
,
只有一个操作数
)
&&
和
||
遵守短路求值的规则:
(1)
对于
&& ,
如果左侧表达式值为
false,
则表达式的整体的值一定是
false,
无需计算右侧表达式
(2)对于
||,
如果左侧表达式值为
true,
则表达式的整体的值一定是
true,
无需计算右侧表达式
4.位运算符
位运算符主要有:&? ? ?|? ? ?~? ? ?^
位操作表示
按二进制位运算
.
计算机中都是使用二进制来表示数据的
(01
构成的序列
),
按位运算就是在按照二进制位的每一位依次进行计算.
&:对应位都是1,结果就是1
|:对应位如果有1,结果就是1
^: 一样的是0,不一样的1
~:
如果该位为 0
则转为
1,
如果该位为
1
则转为
0
当
&
和
|
的操作数为整数
(int, short, long, byte)
的时候
,
表示按位运算
,
当操作数为
boolean
的时候
,
表示逻辑运算.
5.移位运算符移位运算符有3个:>>? ? <<? ? ?>>>? ? ?都是按照二进制位来运算
左移
<<
:
最左侧位不要了
,
最右侧补
0
右移
>>
:
最右侧位不要了
,
最左侧补符号位
(
正数补
0,
负数补
1)
无符号右移
>>>:
最右侧位不要了
,
最左侧补
0.
注意:
(1)左移
1
位
,
相当于原数字
* 2.
左移
N
位
,
相当于原数字
* 2
的
N
次方
.
(2)右移
1
位
,
相当于原数字
/ 2.
右移
N
位
,
相当于原数字
/ 2
的
N
次方
.
(3)由于计算机计算移位效率高于计算乘除
,
当某个代码正好乘除
2
的
N
次方的时候可以用移位运算代替
.
(4)移动负数位或者移位位数过大都没有意义
6.条件运算符
表达式
1 ?
表达式
2 :
表达式
3? ? ? ? ? ? ? ?表达式1为布尔表达式
Java
中唯一的一个
三目运算符
,
是条件判断语句的简化写法
7.运算符的优先级运算符之间是有优先级的. 具体的规则我们不必记忆. 在可能存在歧义的代码中加上括号即可。如: System.out.println(10 < 20 && 20 < 30);
此时明显是先计算的
10 < 20
和
20 < 30,
再计算
&&.
否则
20 && 20
这样的操作是语法上有误的
(&&
的操作数只能是
boolean).
三、注释注释是为了让代码更容易被读懂而附加的描述信息. 不参与编译运行, 但是却非常重要
1.Java
中的注释主要分为以下三种:
?
单行注释:// 注释内容(用的最多)
多行注释:/* 注释内容*/(不推荐)
文档注释: /** 文档注释 */(常见于方法和类之上描述方法和类的作用),可用来自动生成文档
?
2.注释规范:
(1)内容准确
:
注释内容要和代码一致
,
匹配
,
并在代码修改时及时更新
.
(2)篇幅合理
:
注释既不应该太精简
,
也不应该长篇大论
.
(3)使用中文
:
一般中国公司都要求使用中文写注释
,
外企另当别论
.
(4)积极向上
:
注释中不要包含负能量
(
例如 领导
SB
等
).
? |
|
|
上一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 10:22:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |