JAVA之变量和运算符

关键字、保留字和标识符

关键字:

  • java中已经使用的英文单词,变色的单词,特别强调:jdk中已经使用的类名也是关键字。
  • 关键字不能用作变量名、方法名、包名。

以下表格列出了java中的关键字
在这里插入图片描述
在这里插入图片描述

保留字:

保留字的意思是Java中并没有使用的,以后是否使用还不清楚的英文单词,如:goto。

标识符:

  • Java中的包、类、方法、参数和变量的名称总称为标识符

  • 标识符的命名规则:

    • 必须以字母、下划线(_)或美元符号($)开头
    • 余下的字符可以是下划线、美元符号或任何的字母或数字,长度不限;
    • 标识符中不能有空格
    • 不能使用Java中的关键字或者保留字做为标识符;
    • 在同一个包中的类名不能相同
  • 标识符的命名规范:

  • 包名:域名.公司名.项目名.种族-- 常见的域名: com、cn、org…

  • 类名:驼峰命名法 ,每个类名中的单词首字母要大写 StudentTestOne 或者Student_Test_One

  • 变量名、方法名、参数名:驼峰命名法-- 命名是首字母小写其他英文单词首字母大写 getAge()、 myAge

  • 常量名:要求所有字母都大写,每个英文单词之间使用"_"隔开: MAX_AGE_MY

常量、变量和数据类型

常量

常量是指程序里持续不变的值,在整个程序运行过程中它是不可改变的
常量的声明:要求所有的字母都大写,每个英文单词之间使用"_"隔开,如:MAX_AGE_MY=[初始值];

变量

变量是指在程序的运行过程中随时可以发生变化的量
变量的声明:数据类型 变量名 [=初始值];

数据类型

在这里插入图片描述

8种基本数据类型

在这里插入图片描述

整数类型

整数类型包含:byte、short、int(默认)、long
在这里插入图片描述
注意:声明long型后面需加上l或者L。

Java中不同进制整型的表示形式:

  • 十进制整数:0 ~ 9
    注:第一位不能是0
  • 十六进制数:0 ~ 9 A ~ F
    注:必须以0x或0X开头
    例如: 0X8A、0x12
  • 八进制整数:0 ~ 7
    注:必须以0开头
    例如: 0123、012
  • 二进制整数:0 1
    注:JDK7以后版本,必须以0b或0B开头
    例如:0b01010000101、0B01010000101
    由于JDK7以后版本数值常量增加对下划线支持,也可以写成:0B0101_0000_1010_0010_1101_0000_1010_0010;

浮点类型

  • float:值后面需要加F或f
  • double(默认)
    在这里插入图片描述

字符型

  • char
  • ①当它接收的是字符时:表示的是单个字符,只能接收一个字符,如:char c1=‘中’; char c2=‘a’。
  • ②当它接收的是整型时:表示的是ASCII码表数值对应的字符,最大长度是2字节16位,如:char c3=97; //a。
  • ③当它接收以\u开头的字符时:表示的是Uncode码表数值对应的字符,如:char c4=’\u03A6’; //Φ。
  • ④当它接收16进制时:表示将16进制转为10进制再对应ASCII码表值,如:char c5=0x23; //#。
  • 转义字符
    在这里插入图片描述

布尔型

boolean数据类型只有两个值:true 和 false。
boolean类型没有给出具体的占用字节数。
Java虚拟机规范中定义:在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位。
官网原文:This data type represents one bit of information, but its “size” isn’t something that’s precisely defined.

基本数据类型的转换

自动类型转换(隐式类型转换):

  • 两种类型彼此兼容
  • 小精度—>大精度
  • 有多种类型的数据混合运算时,会先转为其中最大的精度的数值类型再做计算,遵守以下原则:
    在这里插入图片描述
  • 注:在同时计算byte、short、char之间时,不会相互转换,他们三者在计算时首先会转换为int类型再计算。
  • 注:boolean类型不可以转换为其他的数据类型

强制类型转换(显示类型转换):

  • 转换格式:变量 = (目标类型) 值;
  • 两种类型彼此不兼容
  • 大精度—>小精度
  • 注:在强制类型转换过程中,大精度数据中的值大于小精度能够接受的最大范围时会出现精度丢失。

原码、反码、补码

计算机在存储数值类型数据时是以补码的形式存储的,读取显示时将补码转为原码输出。

原码: 针对于二进制,第一位为符号位(1表示负数 0表示正数)

反码:

  • 当符号位为0时:反码和原码一样;
  • 当符号位为1时:符号位不变,其余位置按原码取反。

补码:

  • 当符号位为0时:补码和原码一样;
  • 当符号位为1时:补码=反码+1

例1:
byte b:1=5;
//原码:0000 0101
//反码:0000 0101
//补码:0000 0101

byte b2=-5;
//原码:1000 0101
//反码:1111 1010
//补码:1111 1011

例2:输出b3,结果为多少?
byte b3=(byte) 129;

~时刻记住: 计算机在存储数值类型数据时是以补码的形式存储的,读取显示时将补码转为原码输出。~

//补码:1000 0001;反码:1000 0000 ;原码:1111 1111
//输出为-127

运算符和表达式

运算符

赋值运算符
在这里插入图片描述
算术运算符

  • 算数运算符操作数必须是数值类型
  • 分为一元运算符和二元运算符:
    ①一元运算符:只有一个操作数:正‘+’,负‘-’,自加‘++’,自减‘- -‘。
    ②二元运算符:有两个操作数,运算符在两个操作数之间:加’+’,减’-’,乘’*’,除’/’,求余’%’。
    ③三元运算符:当表达式1的结果为true时,就为第二个表达式,如果为false时,就为第三个表达式。
    语法是:表达式1?表达式2:表达式3;
    在这里插入图片描述
    注:
    “/”:求整,求两个数相除之后整数部分,符号负负得正。
    “%”:求余,求两个数相除之后余数部分,符号与被除数相同。
    “i++”, 先将i的值作为整个表达的值, 然后将i增加1。
    “++i”, 先将i增加1, 然后将i的值作为整个表达的值。
    “i- -”、“- -i”同理

关系运算符(比较运算符)
在这里插入图片描述

  • 补充:instanceof:只能比较引用数据类型,用于判断某个对象是否是属于某一类型,属于同一类型返回true,否则返回false。
    如:Date d=new Date(); boolean t3=d instanceof Date; System.out.println(t3);//true

逻辑运算符(布尔运算符)
在这里插入图片描述
位运算
只对byte、short、char、int、long有效
在这里插入图片描述
例1:左移
①byte b1=9<<2; //36
//原码:0000 1001
//左移:0010 0100
②byte b2=-9<<2; //-36
//原码:1000 1001
//左移:1010 0100

例2:右移
①byte b1=9>>2; //2
//原码:0000 1001
//右移:0000 0010
②byte b2=-9>>2; //-3
//补码:1111 0111
//反码:1111 0110
//原码:1000 1001
//右移补码:1111 1101
//右移反码:1111 1100
//右移原码:1000 0011
*注:右移负数时移动的是补码,输出时需将右移后的补码转为原码再输出。

逻辑运算符和位运算符区别

  • 相同点是:都能参与逻辑运算,按位与或完全可以代替逻辑与或;
  • 区别是:按位与或可以参与位运算,逻辑与或只能参与逻辑运算,逻辑与或可以“短路”,按位与或不能“短路”。

运算符的优先级
在这里插入图片描述

表达式

表达式是符合一定语法规则的运算符和运算数的序列。

  • 表达式的结合方向和优先级
    在这里插入图片描述
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值