第二章 Java编程基础概念

1.Java基本数据类型和基本类型的类包装?

Java基本数据类型


基本数据类型有八种可以分为三类: 字符类型:char 布尔类型:boolean 数值类型:byte,short,int,long,float,double 数值类型又可以分为整数类型:byte,short,int,long 浮点数类型:float,double 按精度从低到高排序:byte short char int long float double


数据类型说明

数据类型

大小

取值范围

byte

1字节8位

-128~+127

int

4字节32位

-2147483648(-231) ~ + 2147483647(231-1)

short

2字节16位

-32768 (-215) ~ + 32767 (+215-1)

long

8字节64位

-263 ~ + 263-1

float

4字节32位浮点数

1.4E-45 ~ 3.4E+38 , -1.4E-45 ~ -3.4E+38

double

8字节64位浮点数

4.9E-324 ~ 1.7E+308, -4.9E-324 ~ -1.7E+308

基本数据类型有什么好处?


在Java中,new一个对象是存储在堆里的,通过栈中的引用来使用这些对象,所以对象本身是比较消耗资源的,对于我们经常需要使用到的类型,比如int,若每次使用时都需要new一个对象,这样就消耗资源,Java提供了基本数据类型,这样数据的变量不需要再通过new对象来创建,同时也不会在堆上创建,而是直接在栈内存中存储,因此会更加高效。


自动类型转换规则和强制类型转换规则


规则1:如果一个操作数为double型,则整个表达式可提升为double型 规则2:满足自动类型转换的条件 两种类型要兼容 数值类型(整型和浮点型)互相兼容 目标类型大于源类型: 例如:double 型大于 int 型 1.小类型与大类型进行运算的时候,会默认转成大类型 2.大类型接收小类型的时候,小类型默认转成大类型 3.小类型接收大类型的时候,需要强制类型转换 4.强制类型转换有可能造成溢出问题,会舍弃精度


包装类和基本数据类型的对应关系

基本数据类型

包装类

byte

Byte

boolean

Boolean

short

Short

char

Character

int

Integer

long

Long

float

Float

double

Double

2.Java基本语法?

基础语法


大小写敏感 类名:所有类来说,首字母应该大写 包名:尽量保证小写 方法名:首字母需要小写,后面每个单词字母都需要大写


方法的定义


修饰符:public static 返回值类型为:void,则表示没有返回值 参数列表:方法在运算过程中的未知数据,调用者调用方法时传递 return:将方法执行后的结果带给调用者,方法执行到return,整体方法运行结束


形参和实参的区别 形参:在定义函数名和函数体时,使用的参数 目的是用来接收调用该函数时传入的参数,在调用函数时,实参将赋值给形参 实参:可以是常量,变量,表达式,函数等


标识符与关键字


标识符:用来标识类名,变量名,方法名,类型名,数组名,文件名的有效字符序列称为标识符。 关键字:关键字就是Java语言中已经被赋予特定意义的一些单词。


运算符


赋值运算符 变量名   = 表达式; 表达式就是符号(如加号、减号)与操作数(如b,3等)的组合 算数运算符 基本的算术运算 +、-、*、/、%、++、-- 复合算术运算符 +=、-=、*=、/=、%=


关系运算符

运算符

含义

范例

结果

==

等于

5==6

false

!=

不等于

5!=6

true

>

大于

5>6

false

<

小于

5<6

true

>=

大于等于

5>=6

false

<=

小于等于

5<=6

true

=为赋值运算符,==为等于运算符 关系表达式的结果为布尔值 >、<、>=、<= 运算符的优先级别高于==、!= 、<、>=、<=运算符只支持数值类型的数据比较


逻辑运算符

运算符

含义

运算规则

&&

短路与

两个操作数都是true,结果才是true

||

短路或

两个操作数一个是true,结果就是true

!


操作数为true,结果为false

!


操作数为false,结果为true

如果第一个操作数已经能确定表达式的值,第二个操作数就不必计算了; 优先级别 ! > && > ||


运算符优先级


单目运算符包括! ++ --,优先级别高 优先级别最低的是赋值运算符 可以通过()控制表达式的运算顺序,()优先级最高 从右向左结合性的只有赋值运算符、三目运算符和单目运算符 算术运算符 > 关系运算符 > 逻辑运算符


3.Java中的各种变量?

用static来定义变量


只能是类变量,或者说静态变量,而且其定义位置只能在类中,方法霍代码块外,变量的副本只有一个。


不用static来声明变量,则有三种变量的叫法


定义在构造方法,代码块,方法外的变量被称为实例变量,实例变量的副本数量和实力的数量一样。 定义在方法,构造方法,代码块内的变量被称为局部变量。 定义在方法参数中的变量被称为参数。


4.if-else代码优化的N种方案?

基本的if选择结构


if选择结构是根据条件判断结果选择不同的处理


使用if-else选择结构


if ( 条件 ) { //代码块1 }else { //代码块2 }


为什么使用多重if选择结构


单个if选择结构无法完成 多个if选择结构麻烦且效率低 if ( score>=80) { //代码块1 } else if score>=60) { //代码块2 } else { //代码块3 }


嵌套if选择结构


嵌套if控制语句可以通过外层语句和内层语句的协作,增强程序的灵活性 if(条件1) { if(条件2) { 代码块1 } else { 代码块2 } } else { 代码块3 }


优化方案一:提前return,去除不必要的else 优化方案二:使用条件三目运算符 优化方案三:使用枚举 优化方案四:合并条件表达式 优化方案五:使用Optional 优化方案六:表驱动法 优化方案七:优化逻辑结构,让正常流程走主干 优化方案八:策略模式+工厂方法消除if else 优化方案九:策略模式+反射解决方法