Java编程基础概念

第二章 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

数据类型说明

数据类型大小取值范围
byte1字节8位-128~+127
int4字节32位-2147483648(-231) ~ + 2147483647(231-1)
short2字节16位-32768 (-215) ~ + 32767 (+215-1)
long8字节64位-263 ~ + 263-1
float4字节32位浮点数1.4E-45 ~ 3.4E+38 , -1.4E-45 ~ -3.4E+38
double8字节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.强制类型转换有可能造成溢出问题,会舍弃精度

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

基本数据类型包装类
byteByte
booleanBoolean
shortShort
charCharacter
intInteger
longLong
floatFloat
doubleDouble

2.Java基本语法?

基础语法

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

方法的定义

修饰符:public static
​
返回值类型为:void,则表示没有返回值
​
参数列表:方法在运算过程中的未知数据,调用者调用方法时传递
​
return:将方法执行后的结果带给调用者,方法执行到return,整体方法运行结束
形参和实参的区别
​
形参:在定义函数名和函数体时,使用的参数
​
目的是用来接收调用该函数时传入的参数,在调用函数时,实参将赋值给形参
​
实参:可以是常量,变量,表达式,函数等

标识符与关键字

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

运算符

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

关系运算符

运算符含义范例结果
==等于5==6false
!=不等于5!=6true
>大于5>6false
<小于5<6true
>=大于等于5>=6false
<=小于等于5<=6true
=为赋值运算符,==为等于运算符
关系表达式的结果为布尔值
>、<、>=、<= 运算符的优先级别高于==、!=
、<、>=、<=运算符只支持数值类型的数据比较

逻辑运算符

运算符含义运算规则
&&短路与两个操作数都是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

优化方案九:策略模式+反射解决方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值