数据类型与运算符
数据类型和运算符
变量和类型
变量:程序运行时可变的量,相当于开辟一块内内存空间保存一些数据。
类型:对变量的种类进行划分,不同类型的变量具有不同的特性。
基本语法
int 变量名=初始值;
java中一个int变量占4个字节,和操作系统没有关系也就是说没有64位和32位的概念。
数值范围:-2^31~ 2^31-1
代码示例
int mum=10;
注意
- int 表示变量的类型是一个整型
- 变量名是变量的标识. 后续都是通过这个名字来使用变量
- Java 中 = 表示赋值(和数学不一样), 意思是给变量设置一个初始值.
- 初始化操作是可选的, 但是建议创建变量的时候都显式初始化.
- 最后不要忘记分号, 否则会编译失败.
- // 表示注释. 注释作为代码的解释说明部分, 不参与编译运行
基本语法格式
long 变量名=初始值;
java中long类型占8个字节
数值范围:-2^63~ 2^63-1
代码示例
long num=10L;//也可以写成10l
注意
- 基本语法格式和创建 int 变量基本一致, 只是把类型修改成 long
- 初始化设定的值为 10L , 表示一个长整型的数字. 10l 也可以.
- 使用 10 初始化也可以, 10 的类型是 int, 10L 的类型是 long, 使用 10 L 或者 10 l 更好一些.
基本语法格式
double 变量名=初始值;
java中的double虽然也是8个字节,但是浮点数的内存布局和整数差别很大,不能单纯的用2^n表示数据范围
Java 的 double 类型的内存布局遵守 IEEE 754 标准(和C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 势必会存在一定的精度误差.
代码示例
double num=1.0;
基本语法格式
float 变量名=初始值;
java中float类型占4个字节,同样遵守IEEE 754标准。
代码示例
float num=1.0f;//1.0F也可以
基本语法格式
char 变量名=初始值;
代码示例
char ch=‘A’;
注意
- java中使用单引号+单个字母的形式表示字符字面值。
- 计算机中的字符的本质是一个整数,C语言中使用ASCII码表示字符,java中使用Unicode表示字符,一个字符表示两个字节表示的字符种类更多,包括中文。
字符编码方式参见如下:
点击跳转字符编码深究
基本语法格式
byte 变量名=初始值;
代码示例
byte val=0;
注意事项
- 字节类型表示的也是整型,只占一个字节,范围-2^7~ 2^7-1
- 字节类型与字符类型互不相干
基本语法格式
short 变量名=初始值;
代码示例
short val=0;
注意事项
- short 占用 2 个字节, 表示的数据范围是 -32768 ~ +32767
- 这个表示范围比较小, 一般不推荐使用.
基本语法格式
boolean 变量名=初始值;
代码示例
boolean val=true;
注意
- 布尔类型变量的值只取两种:true表示真,false表示假
- java中boolean和int不能相互转换,不存在1表示true,0表示false用法。
- boolean在jvm有些是1个字节,有些是1个比特位,没有明确规定。
基本语法格式
String 变量名=“初始值”;
代码示例
String name=“zpf”;
注意事项
- java中使用双引号+若干字符的性标识字符串字面值。
- String不是基本数据类型而是引用类型。
- 字符串中一些特定的不能直接表示的字符需要进行转义。
- 当一个+表达式中存在字符串的时候,都会执行字符串拼接行为。
转义字符对照表
变量的生效范围,一般是变量定义的代码块中(大括号呢中)
硬性指标
- 一个变量只能字母,数字,下划线
- 不能以数字开头
- 变量名对大小写时敏感的,大小写含义是不同的
软性指标
- 变量名具有描述性,见名知意。
- 变量名不宜使用拼音
- 变量名的词性推荐使用名词
- 变量名使用小驼峰命名法,由多个单词构成时,第一个单词的首字母小写,其余单词的首字母大写。
int maxValue=100;
字面值常量
10,10.0,‘A’,"zpf"等
final关键字修饰的常量
final int a=10;
常量不能在运行过程中发生修改
- 变量:运行期间可以改变的,并且变量的值是在运行时候才知道的。
- 常量:在编译期间就确定它的值,并且在运行期间不能再进行修改
int和long混合运算
int和long混合运算时,int会提升为long类型,需要使用long类型的变量接收结果,非要用int接收结果就必须进行整型提升。
byte和byte的运算
byte和byte进行运算时,byte都会提升为int然后在进行运算,结果也要用int来接收。
由于计算机的cpu通常是按照4个字节为单位从内存中读取数据,为了硬件上实现的方便,诸如short和int这种小于int的4个字节的类型,都先会提升为int,再参与运算。
类型转换总结
- 不同数字类型的变量之间的赋值,表示范围更小的类型能隐式转换为范围较大的类型。
- 如果需要把范围的类型赋值给范围小的类型,需要强制类型转换,但是可能会有精度损失。
- 将一个字面值常量进行赋值的时候,java会自动对数字范围进行检查。
运算符
基本四则运算
+, -, *, %, /
增量运算符
- 增量赋值运算符
+=,-=,*=,/=,%=
- 自增/自减运算符
++,–
前置自增/自减是先参加运算在自增/自减
后置自增/自减是先自增/自减再参加运算
陷阱
int i=10;
i=i++;
System.out.println(i);//结果i=10 c语言中i=11
== != >= <= > <
运算符的表达式关返回值都是boolean类型
&& || !
逻辑&&(也称短路与)
规则: 两个操作数都为 true, 结果为 true, 否则结果为 false.
逻辑或
规则:两个操作数都为false,结果才问ifalse,否则结果为true
逻辑!
规则:操作数为true,结果为false.操作数为false,结果为true,这个运算符是一个单目运算符,只有一个操作数。
短路求值
- 对于 && , 如果左侧表达式值为 false, 则表达式的整体的值一定是 false, 无需计算右侧表达式.
比特科技 - 对于 ||, 如果左侧表达式值为 true, 则表达式的整体的值一定是 true, 无需计算右侧表达式
& | ~ ^
位操作表示按照二进制位运算,计算机中都是用二进制来表示数据,按位运算是按二进制位的每一位进行计
按位&
如果两个二进制位都是1,则结果为1,否则结果为0
按位|
如果两个二进制位都是0,则结果为0,否则结果为1
按位~
如果该位为1则转为0,该位为0则转为1
按位异或^
如果两个二进制位相同,则结果为0,相异结果为1
<< >> >>>
左移<<
左侧舍弃,右侧补0
右移>>
右侧舍弃,左侧补符号位(正)数补0,负数补1)
无符号右移
右侧舍弃,左侧补0
面试题
如何将一个数乘N或除N,一定要回答用左移或右移,一定不要说乘除,真的很low,计算机只认识左右移,乘除还要转换成左右移,明显低效率。
注意
- 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
- 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
- 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.
- 移动负数位或者移位位数过大都没有意义
表达式1?表达式2:表达式3
当表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值; 当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值.
注释
单行注释://
多行注释:/* /
文档注释:/* */
- 内容准确: 注释内容要和代码一致, 匹配, 并在代码修改时及时更新.
- 篇幅合理: 注释既不应该太精简, 也不应该长篇大论.
- 使用中文: 一般中国公司都要求使用中文写注释, 外企另当别论.
- 积极向上: 注释中不要包含负能量(例如 领导 SB 等).
本文地址:https://blog.csdn.net/qq_45630711/article/details/111881005