1.关键字
概述:被java语言赋予特殊含义的单词
组成规则:全部小写
注意事项:
goto和const作为保留字存在,在JDK以后的版本升级过程中可能提升为关键字
类似于notepad++,eclipse这样的高级开发工具关键字都会变色
今天见过了哪些关键字:class,public,static,void,int,byte,short,long,char,float,boolean,double,true,false,null
2.标识符
概述:就是给类,接口,方法,变量等起名字的字符序列
组成规则:
英文大小写字母
数字字符
$和_
注意事项:
不能以数字开头
不能使用关键字
区分大小写
起名字要见名之意
四大命名规则:
包:其实就是文件夹,一般是以公司的域名反转之后的前两位
一个单词:全部小写 test
多个单词:全部小写,多个单词之间用.隔开 cn.edu360 www.baidu
类和接口:
一个单词:首字母大写 File
多个单词:每个单词首字母都大写 FileInputStream
变量和方法:
一个单词:全部小写 read
多个单词:从第二个单词开始首字母大写 readLine
常量:
一个单词:全部大写 KEY
多个单词:全部大写,多个单词之间用下划线隔开 ROUND_HALFUP
3.常量
概述:在程序执行的过程中,其值不能发生改变的量
字面值常量:
字符串常量:就是用双引号括起来的内容 “字符串”
字符常量:就是用单引号括起来的内容 ‘符’
整数常量:包括所有的整数 10 -10
小数常量:包括所有的小数 12.12 -11.1
布尔常量:要么false,要么true
空常量:值就是null,数组的时候讲解
自定义常量:后面的时候讲
4.进制
二进制:0b开头,0-1组成
八进制:0开头,0-7组成
十进制:默认就是十进制,0-9组成
十六进制:0x开头,由0-f组成
x进制如何转换成y进制?
x进制转换成十进制:
位值:每一位上面对应的数值
进制数:x进制的进制数就是x
次方:从右向左,从0开始编号,对应位上面的编号就是当前位上面的次方
将每一位上面的位值乘以进制数的次方相加在一起就是十进制
十进制转换成y进制:除以y直至商为零,余数反转
5.有符号表示法
在计算机中整数都是以补码的方式进行存储和运算的。
原码:将一个整数转换成二进制。最高位作为符号位,0表示正数,1表示负数,其余位表示数值位
反码:正数的反码和原码相同。负数的反码除了最高位,其余位全部取反
补码:正数的补码和原码相同。负数的补码是在反码的基础上末尾+1
6.变量
概述:在程序执行的过程中,其值可以在一定范围内发生改变的量
定义格式:
数据类型 变量名 = 初始化值。
注意事项:
作用域:当前的变量在哪一个大括号中定义的,那么当前的大括号就是该变量的作用域
在同一作用域中不能定义同名的变量
在一行一个语句中可以同时定义多个同一种数据类型的变量
在同一行上面不建议写多个语句,一个语句的结束标记是”;”
7.数据类型
基本数据类型:全是小写,都是关键字,都会变色
字节 位数 默认值
byte 1 8 0
short 2 16 0
int 4 32 0
long 8 64 0
float 4 32 0.0
double 8 64 0.0
char 2 16 空”
boolean 1 8 false
引用数据类型:除了基本数据类型之外的类型
数据类型运算规则:
boolean类型是不参与和其他数据类型之间的运算
byte,short,char之间不直接相互运行,而且提升精度为int类型之后再相互运算
精度的优先级:byte,short,char->int->long->float->double
数据类型强制转换格式:
目标数据类型 变量名 = (目标数据类型)(要转换的值);
8.算术运算符
/:如果想要结果得到小数的话,那么必须让除数或者被除数变成小数
%:a%b的取值范围是0-(b-1)
5.数据类型转换:
第一题:
short b1=3;
byte b2=8,b;
b=b1+b2;
b=8+3;
哪句是编译失败的呢?为什么呢?
有问题,由int数据类型转换到byte数据类型会丢失精度,需要强转
解决方案:将 b=b1+b2;改为 b=(byte)b1+b2;
第二题:
byte result = 313;有没有问题?有问题如何解决?结果是多少呢?将结果分析的步骤写出来
有问题,313是int类型的数据,将其转化为byte 类型的数据会丢失精度,所以需要强转,
将byte result = 313;改为 byte result = (byte) result;即可
313的补码:
00000000 00000000 00000001 00111001
因为byte 是8位,所以从低到高取八位
00111001 转换为十进制为 57
所以结果为 57.
6.按要求填写缺少的代码
class Demo{
public static void main(String[] args){
int result = (a++)+(b++)+(c+++a–);
//要求最终输出的result的值等于50,要求定义最初a,b,c的值
//System.out.println(result);
}
}
缺少的代码
int a= 1,b=17,c=30;
过程:
第一个括号: a
第二个括号: b
第三个括号: c+a+1
所以
所有满足
a+b+c+a+1=50
的a,b,c
的值的集合都满足要求。
7.基本小题目
int a = 10;
int b = 10;
int c = 10;
a = b++;
c = –a;
b = ++a;
a = c–;
请分别计算出a,b,c的值
变化过程
a 10 9
b 11
c 9
所以
a的值为10;
b的值为11;
c的值为9;
8.比较复杂的题目
int a = 4;
int b = (a++)+(++a)+(a*10);
引出运算符的优先级
运算过程
先算括号内的
a++ = 4;//计算完这步之后a=5;
++a = 6;//计算完这步之后a=6;
a*10 = 60;
所以b的值为4+6+60=70;