JAVA基础(三)

第三章 Java基础

3.1类型转换

3.1.1 自动转换

定义:小的数据类型转换大的数据类型【存储空间】

注:

        1.在Java中,boolean类型与所有其他7种类型都不能进行转换;

​         2.其他 7种数据类型,它们之间都可以进行转换,但是可能会存在精度损失或者其他一些变化;(short和char ,因值的范围不同,不能自动转换)

​          byte ->short ,char -> int  ->long-> float->double

​          byte与char 不能自动转换  char与short之间也不能自动转换

3.1.2强制转换

定义:大数据类型转小数据类型[存储空间大小]

语法:数据类型 变量名 = (数据类型)值/变量名;

注:

        1. ​ 高转低会导致精度丢失,不同类型的强制转换,可能会导致精度的下降.

        2. ​ 实际开发中:应该要知道被强制转换的数据,是在一个已知的范围;

3.2运算符

3.2.1 算数运算符

符号:加法(+)减法(-)乘法 (*) 除法(/) 取模(%)

eg:

        1) 0.0/0.0   结果是NaN ,任何的NaN都不等于自己(面试题)

        2) 1.0/0.0   结果:Infinity,表示无穷大 

3.2.2 自增自减运算符

符号:++  --

注:

        1) 自增自减只能够用于变量,不能用于常量  

        ​ 2) 自增自减运算的优先级  比算术运算符高

        3)当有表达式时,把整个表达式看成一个整体,如果变量名在前面,那么整个表达式的值就是原来值不变;如果变量名在后面,那么整个表达式的值就是原来的值加1。

3.2.3 赋值运算符

符号: =   +=   -=   *=   /=   %=

运算顺序:从右到左,把符号右边的值赋值到左边的变量中

3.2.4 比较运算符

符号: ==   !=   >  <   >=   <=   

运算规律: 比较运算的结果是一个布尔类型的值(true 或false)

3.2.5 逻辑运算符

符号:&   |   &&   ||  ^   !

运算规则:用来连接布尔类型的两个值或表达式,最终结果也位布尔类型

1. &  :两边都为true ,结果为true

2. |  :只要有一边为true,结果为true

3. && :两边都为true ,结果为true

4. ||  :  只要有一边为true,结果为true

5. ^   :  两边不一样,结果为true ,否则为false

6. ! : 逻辑非

&& || 和 & | 区别?

&& || 具有短路功能 &|不具有短路功能

A  &&  B    当A表达式为false时候,B中的代码不会执行,逻辑运算的值也为false

A  ||  B     当A表达式为true时候,B中的代码不会执行,逻辑运算的值也为true

3.2.6 三目运算符

定义:

由问号?及冒号:分割的三个表达式,组成的一个表达式如X ? Y : Z ;按照一定规则进行运算的式子,称为表达式;该表达式具有一个结果值:

X     :布尔类型的值或者结果为布尔类型的表达式

Y  Z  :一般来说数据类型相同的值或者表达式

运算规则:

X 为true,就是 Y 的结果值 ( 冒号前面的表达式的值):也就是整个三目运算的结果值

X为false,就是Z的结果值 ( 冒号后面的表达式的值):也就是整个三目运算的结果值

3.3选择结构

3.3.1  if选择结构

基本if结构

基本语法:

  if(判断条件){

                执行语句;

​ }

   判断条件:  布尔类型的值或者表达式

   执行语句:当条件满足时执行(可以是一条语句,也可以是一组语句)

if...else结构

基本语法:

​ if(判断条件){

​         执行语句;

​ }else{

        ​ 执行语句;

​ }

 判断条件:  布尔类型的值或者表达式

 执行语句:当条件满足时执行if中的语句  其他情况执行else中的语句

if...else if结构

基本语法:

​ if(判断条件){

          ​ 执行语句;

​ }else if(判断条件){

          ​  执行语句;

​           }else if(判断条件){

​                         执行语句;

​ }......

判断条件:  布尔类型的值或者表达式

执行语句:所有条件只能满足一个 条件互斥 因此执行语句只能有一条

if...else if...else结构

**基本语法**:

​ if(判断条件){

​          执行语句;

​ }else if(判断条件){

        ​  执行语句;

​              }.....else if(判断条件){

​                       执行语句;

​                }else{

​                        执行条件;

​    }

判断条件:  布尔类型的值或者表达式

执行语句:所有条件只能满足一个 条件互斥 因此执行语句只能有一条被执行到  如果条件都不满足 则执行else中的语句。

3.3.2  swtich选择结构

基本语法:

switch(key){

        case  v1:

                ​ 执行语句;

                 ​ break;

        case  v2:

                ​ 执行语句;

                ​ break;

        ...............

        default:

​                执行语句;

                ​ break;

}

key: 限定类型的局部变量或常量

​java5之前  :  byte short char int

​java5支持  :  enum枚举  

​java7支持  :  String 类型

v1,v2:与key同种类型的值 常量

执行原理:

​ 将key的值与case中列举的值进行匹配  如果匹配 执行 执行语句 找到break  跳出选择结构  如果都没有匹配上的值 则执行default中的执行语句,找到break 跳出选择结构;

注:

        1.  每个case之间顺序可以交换 不影响代码运行

        2.  default不一定放在末尾 在所有case失效的时候就会被执行到

        3. ​ case中值与 key类型必须一致

        4. ​最后一个break可以省略,但不建议

        5. ​break可以省略,但会导致后续case条件判断失效 按照从上到下顺序,直到找到第一个break跳出选择结构;如果没有找到,执行到末尾,自动跳出选择结构

3.4 循环结构

3.4.1 while循环

基本语法:

while(循环条件){

​         执行语句;   //循环体

}

循环条件:布尔类型的值或者表达式,需要不断变化,如果是一个常量或者固定不变的值,则称为没有意义的循环或者死循环;

执行语句:当循环条件为true时执行语句,false终止循环,不执行语句

执行流程:

1) 第一次判断条件true,继续执行

2) 第二次判断条件true,继续执行

3) 第三次判断条件true,继续执行

4)  ......

5) 直到第n次判断条件false,终止循环

3.4.2 do...while循环

基本语法:

do{

          执行语句;

}while(循环条件);

循环条件:布尔类型的值或者表达式,需要不断变化,如果是一个常量或者固定不变的值,则称为没有意义的循环或者死循环;

执行语句:当循环条件为true时执行语句,false终止循环,不执行语句

执行流程:

​ 1. 首先执行do后面结构体中的执行语句

2. 判断循环条件是否为true,如果true,执行do后执行语句,如果为false终止循环

3.4.3 for循环

基本语法:

for(初始化条件A;判断条件B;循环后语句C){

​          执行语句D;

}

初始化条件A:初始化一个值,用来作为B中的判断条件

判断条件B:布尔类型的值或者表达式

循环后语句C:循环后执行的代码,目的是为了改变初始条件A的值,使B中条件不是一个固定的值

执行语句D:当B中的判断条件满足,为true执行D,false,则不执行

执行流程:

第一次:A-->B(true)-->D-->C

第二次:   B(true)-->D-->C

第三次:   B(true)-->D-->C

​  …

 第n次:   B(false)  结束整个循环

增强for循环:

语法:

for(源中元素类型   e  : 源 ){

​         直接使用e就可以了

}

常见的异常 

NullPointerException:空指针异常(空引用异常)

 操作了一个尚未初始化或者没有分配内存空间的数组

 ArrayIndexOutOfBoundsException:数组的索引越界异常

 操作的数组的索引不在[0,数组名.length-1]范围内

3.4.4 循环控制语句

break :终止当前循环

continue:跳出当前循环

return:终止当前方法

3.5数组

3.5.1数组概念

概念:计算机在内存区域分配的一段连续的区域,用来存储不同或同种类型的数据

1)数组名   :数组的名字

2)数组元素 :就是存放在数组里面的数据

3)数组索引 :就是数组里面连续存储空间的编号,从0开始

4)length    :数组的属性长度  数组名.length拿到数组的长度

语法:

        数组元素类型[] 数组名;

3.5.2 数组初始化

静态初始化

语法:数组元素类型[] 数组名 = new 数组元素类型[]{元素 1,元素 2,元素 3,.......};

动态初始化

语法:数组元素类型[] 数组名 = new 数组元素类型[length];

3.6 方法

3.6.1自定义方法

public static void main(String[] args){

        方法体;
}
public:修饰符 表示公共的
static:修饰符 jvm优先加载
void  :此处为返回值类型,void表示方法没有返回值
main  : 方法名字

()    : 圆括号  固定格式用来存放形式参数
String[] args:形式参数  String[]参数类型 args参数名字
{}    :方法结构体  里面存放需要方法完成的功能语句

基本语法:

public:非必须

static:非必须

返回值类型 :没有写void

方法名: 必须

()    : 必须

String[] args: 根据实际需要 可以有 也可以没有

{}    :必须

方法调用:

1) 方法有static修饰:类名.方法名+参数列表[个数,顺序,类型必须一致]

2) 方法没有static修饰:对象名.方法名+参数列表[个数,顺序,类型必须一致]

3) 方法在同一个类中:方法名+参数列表[个数,顺序,类型必须一致]

注:

1.如果方法设置了返回值类型,方法内部必须有return语句返回对应类型的值/变量/表达式;(return后返回的类型必须与方法上的返回值类型一致)

2.return语句后不能再有其他执行语句

3.如果方法内部有条件判断 此时充分考虑如果条件不满足 方法是否还有返回值,保证结构的完整;

3.6.2方法重载

方法的重载的方法一般都具有相类似的功能,只是参数列表不同,与返回值类型无关,返回值类型可以不同,为了在使用时方便记忆同种类似功能的方法。

3.6.3方法参数传递

值传递

java的参数传递,不管是基本数据类型还是引用类型的参数,都是按值传递,没有按引用传递!

基本数据类型传递的是值本身。

引用数据类型传递的是变量在堆中的引用地址。

注:

方法调用时,实际参数把它的值传递给对应的形式参数,相当于拷贝了一份值给形式参数,所以方法执行中形式参数值的改变不影响实际参数的值。

  1. 基本数据不影响原来的值
  2. 引用数据不影响原来的地址值:

引用地址,引用的值,如果被改变,原来引用的的值所引用的值也会被改变,因为都是同一个引用。

3.6.4 可变参数

语法:

数据类型...参数名

如: int...param

注:

可变参数从本质上来来说还是一个数组

可变参数只能放在参数列表的末尾

一个方法只能有一个可变参数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值