core java 复习题加练习题第二天

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.常量

概述:在程序执行的过程中,其值不能发生改变的量 Spring Cloud云析 679819153

字面值常量:

字符串常量:就是用双引号括起来的内容"字符串"

字符常量:就是用单引号括起来的内容'符'

整数常量:包括所有的整数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.数据类型

基本数据类型:全是小写,都是关键字,都会变色

字节位数默认值

byte180

short2160

int4320

long8640

float4320.0

double8640.0

char216空''

boolean18false

引用数据类型:除了基本数据类型之外的类型

数据类型运算规则:

boolean类型是不参与和其他数据类型之间的运算

byte,short,char之间不直接相互运行,而且提升精度为int类型之后再相互运算

精度的优先级:byte,short,char->int->long->float->double

数据类型强制转换格式:

目标数据类型 变量名 = (目标数据类型)(要转换的值);

8.算术运算符

/:如果想要结果得到小数的话,那么必须让除数或者被除数变成小数 Spring Cloud云析 679819153

%: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;