数据类型与运算符

变量和类型

变量:程序运行时可变的量,相当于开辟一块内内存空间保存一些数据。

类型:对变量的种类进行划分,不同类型的变量具有不同的特性。

  • 整型变量

基本语法

int 变量名=初始值;

java中一个int变量占4个字节,和操作系统没有关系也就是说没有64位和32位的概念。
数值范围:-2^31~ 2^31-1

代码示例

int mum=10;

注意
  1. int 表示变量的类型是一个整型
  2. 变量名是变量的标识. 后续都是通过这个名字来使用变量
  3. Java 中 = 表示赋值(和数学不一样), 意思是给变量设置一个初始值.
  4. 初始化操作是可选的, 但是建议创建变量的时候都显式初始化.
  5. 最后不要忘记分号, 否则会编译失败.
  6. // 表示注释. 注释作为代码的解释说明部分, 不参与编译运行
  • 长整型

基本语法格式

long 变量名=初始值;

java中long类型占8个字节
数值范围:-2^63~ 2^63-1

代码示例

long num=10L;//也可以写成10l

注意
  1. 基本语法格式和创建 int 变量基本一致, 只是把类型修改成 long
  2. 初始化设定的值为 10L , 表示一个长整型的数字. 10l 也可以.
  3. 使用 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’;

注意
  1. java中使用单引号+单个字母的形式表示字符字面值。
  2. 计算机中的字符的本质是一个整数,C语言中使用ASCII码表示字符,java中使用Unicode表示字符,一个字符表示两个字节表示的字符种类更多,包括中文。

字符编码方式参见如下:
点击跳转字符编码深究

  • 字节类型变量

基本语法格式

byte 变量名=初始值;

代码示例

byte val=0;

注意事项
  1. 字节类型表示的也是整型,只占一个字节,范围-2^7~ 2^7-1
  2. 字节类型与字符类型互不相干
  • 短整型变量

基本语法格式

short 变量名=初始值;

代码示例

short val=0;

注意事项
  1. short 占用 2 个字节, 表示的数据范围是 -32768 ~ +32767
  2. 这个表示范围比较小, 一般不推荐使用.
  • 布尔类型变量

基本语法格式

boolean 变量名=初始值;

代码示例

boolean val=true;

注意
  1. 布尔类型变量的值只取两种:true表示真,false表示假
  2. java中boolean和int不能相互转换,不存在1表示true,0表示false用法。
  3. boolean在jvm有些是1个字节,有些是1个比特位,没有明确规定。
  • 字符串类型变量

基本语法格式

String 变量名=“初始值”;

代码示例

String name=“zpf”;

注意事项
  1. java中使用双引号+若干字符的性标识字符串字面值。
  2. String不是基本数据类型而是引用类型。
  3. 字符串中一些特定的不能直接表示的字符需要进行转义。
  4. 当一个+表达式中存在字符串的时候,都会执行字符串拼接行为。
转义字符对照表

在这里插入图片描述

  • 变量的作用域

变量的生效范围,一般是变量定义的代码块中(大括号呢中)

  • 变量的命名规则

硬性指标
  1. 一个变量只能字母,数字,下划线
  2. 不能以数字开头
  3. 变量名对大小写时敏感的,大小写含义是不同的
软性指标
  1. 变量名具有描述性,见名知意。
  2. 变量名不宜使用拼音
  3. 变量名的词性推荐使用名词
  4. 变量名使用小驼峰命名法,由多个单词构成时,第一个单词的首字母小写,其余单词的首字母大写。

int maxValue=100;

  • 常量

字面值常量

10,10.0,‘A’,"zpf"等

final关键字修饰的常量

final int a=10;

常量不能在运行过程中发生修改

  • 变量和常量的区别

  1. 变量:运行期间可以改变的,并且变量的值是在运行时候才知道的。
  2. 常量:在编译期间就确定它的值,并且在运行期间不能再进行修改
  • 类型提升

int和long混合运算

int和long混合运算时,int会提升为long类型,需要使用long类型的变量接收结果,非要用int接收结果就必须进行整型提升。

byte和byte的运算

byte和byte进行运算时,byte都会提升为int然后在进行运算,结果也要用int来接收。

由于计算机的cpu通常是按照4个字节为单位从内存中读取数据,为了硬件上实现的方便,诸如short和int这种小于int的4个字节的类型,都先会提升为int,再参与运算。

类型转换总结
  1. 不同数字类型的变量之间的赋值,表示范围更小的类型能隐式转换为范围较大的类型。
  2. 如果需要把范围的类型赋值给范围小的类型,需要强制类型转换,但是可能会有精度损失。
  3. 将一个字面值常量进行赋值的时候,java会自动对数字范围进行检查。
  • 图总

在这里插入图片描述

运算符

  • 算术运算符

基本四则运算

+, -, *, %, /

增量运算符
  1. 增量赋值运算符

+=,-=,*=,/=,%=

  1. 自增/自减运算符

++,–
前置自增/自减是先参加运算在自增/自减
后置自增/自减是先自增/自减再参加运算

陷阱
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,这个运算符是一个单目运算符,只有一个操作数。

短路求值
  1. 对于 && , 如果左侧表达式值为 false, 则表达式的整体的值一定是 false, 无需计算右侧表达式.

  2. 对于 ||, 如果左侧表达式值为 true, 则表达式的整体的值一定是 true, 无需计算右侧表达式

  • 位运算

& | ~ ^

位操作表示按照二进制位运算,计算机中都是用二进制来表示数据,按位运算是按二进制位的每一位进行计

按位&

如果两个二进制位都是1,则结果为1,否则结果为0

按位|

如果两个二进制位都是0,则结果为0,否则结果为1

按位~

如果该位为1则转为0,该位为0则转为1

按位异或^

如果两个二进制位相同,则结果为0,相异结果为1

  • 移位运算

<< >> >>>

左移<<

左侧舍弃,右侧补0

右移>>

右侧舍弃,左侧补符号位(正)数补0,负数补1)

无符号右移

右侧舍弃,左侧补0

面试题

如何将一个数乘N或除N,一定要回答用左移或右移,一定不要说乘除,真的很low,计算机只认识左右移,乘除还要转换成左右移,明显低效率。

注意
  1. 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
  2. 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
  3. 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.
  4. 移动负数位或者移位位数过大都没有意义
  • 条件运算符

表达式1?表达式2:表达式3

当表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值; 当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值.

注释

  • 基本规则

单行注释://
多行注释:/* /
文档注释:/
* */

  • 注释规范

  1. 内容准确: 注释内容要和代码一致, 匹配, 并在代码修改时及时更新.
  2. 篇幅合理: 注释既不应该太精简, 也不应该长篇大论.
  3. 使用中文: 一般中国公司都要求使用中文写注释, 外企另当别论.
  4. 积极向上: 注释中不要包含负能量(例如 领导 SB 等).
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值