Java的基础语法(二)

18 篇文章 2 订阅

目录

1.自动类型转换

2.强制类型转换

3.运算符

一 . + 号的使用

(1)  + 号可作为连接符使用 .

(2) 自增自减运算符

二 . = (赋值运算符)

三 . 关系运算符

四 . 逻辑运算符

五 . 三元运算符

六 . 运算符优先级

4.流程控制语句

一 . If 分支

(1) if的作用

(2) if分支的三种格式

二 . Switch 分支

(1) whitch 的作用

(2) whitch 执行流程

三  . For 循环

四 . While 循环

五 . Do-While 循环

5.数组

(1)静态初始化数组

(2) 动态初始化数组

(3) 数组遍历

(4) 数组的内存分配机制


1.自动类型转换

   类型范围小的变量 , 可以直接赋值给类型范围大的变量 .

例 :  byte a = 20;  int b = a; 

       a的数值范围比b的小 , 当把 a 赋给 b 时会进行自动类型转换.

例1 : byte a = 10 ;  int b = 20 ;  double c = 1.0 ;  double  d = a + b + c ; //31.0

      byte -> int -> double  接收数据时如果不使用double会产生异常.

例2 : byte a = 10;  byte b = 20;  byte c = a+b ;(报异常,可以把byte 改为 int 类型)

修改后 : byte a = 10;  byte b = 20;  int c = a+b ;

a+b 的数据无法使用byte来接收 .因为a 和 b 在运行的过程中自动转换成了 int 类型 .

注意 :

  •  表达式的最终结果类型由表达式中的最高类型决定.
  •  在表达式中 , byte , short , char 是直接转换成 int 类型参与运算的.

2.强制类型转换

  可以强行将类型范围大的变量 , 数据赋值给类型小范围小的变量 .

  

注意 :

  •   强制类型转换可能造成数据(丢失).
  •   浮点型强制转成整型 , 直接丢失小数部分 , 保留整数部分返回 .

3.运算符

      运算符 : 对字面量或者变量进行操作的符号.

. + 号的使用

(1)  + 号可作为连接符使用 .

例 : int a = 10 ; string b = "abc"; System.out.printn(a+b);//10abc

注意 : + 在作为连接符时当字符串与数值相加时返回的是一个字符串 ,  + 也可作为运算符 ,

(2) 自增自减运算符

注意 :

  • ++ 和 -- 既可以放在变量的后面 , 也可以放在变量的前面 .
  • ++ , -- 只能操作变量 , 不能操作字面量的 .

. = (赋值运算符)

. 关系运算符

. 逻辑运算符

. 三元运算符

. 运算符优先级

4.流程控制语句

. If 分支

(1) if的作用

   根据判定的结果( 真或假 )决定执行某个分支的代码.

(2) if分支的三种格式

. Switch 分支

(1) whitch 的作用

     根据匹配条件去执行分支 , 适合做值匹配的分支选择 , 结构清晰 , 格式良好 .

(2) whitch 执行流程

  •  先执行表达式的值 , 拿着这个值去与case 后的值进行匹配 .
  • 匹配哪个 case 的值为 true 就执行哪个 case , 遇到break 就跳出switch 分支 .
  • 如果  case 后的值不匹配则执行default 代码 .

例 :

Break : 跳出并结束当前所在循环的执行.

Countinue : 用于跳出当前循环的当次执行 , 进入下一次循环 .

注意事项 :

  •   表达式类型只能是 byte , short , int , char , JDK5 开始支持枚举 , JDK7 开始支持String , 不支持 double , float , long .
  •   case 给出的值不予许重复 , 且只能是字面量 , 不能是变量 .
  • 不能忘记写break , 否则穿透现象.
  • Break : 只能用于结束所在循环 , 或者结束所在switch分支的执行 .
  • Continye : 只能在循环中进行使用 .

Switch 的穿透性

  •   如果代码执行行到没有写break的case块 , 执行完后将直接进入下一个case块执行代码 (而且不会进行任何匹配) , 直到遇到break才跳出分支,这就是switch 的穿透性.

  . For 循环

    for循环可以控制一段代码反复执行多次.

语法 : for( 初始化语句 ; 循环条件 ; 迭代语句 ) {

                循环体语句(重复执行的代码);     

        }

例 :

For (int I = 0 ; I < 3 ; i++){

       System.out.println("Hello World");

}

结果返回 三行 Hello World , 当执行到第四条数据时 I 大于 3 了,返回 flser ,结束循环.

. While 循环

      while循环可以控制一段代码反复执行多次.

语法 : while(循环条件){

        循环体语句 ( 被重复执行的代码 );

        迭代语句;

}

例 :

Int I = 0;

While( I < 3 ){

     System.out.println( "Hello Word" );

     i++;

}

结果返回 三行 Hello World , 当执行到第四条数据时 I 大于 3 了,返回 flser ,结束循环.

注 : for 和 whlie 的使用规范 : 知道循环几次 ,就使用 for ; 不知道循环多少次的建议使用 whlie.

. Do-While 循环

 先执行再判断循环条件.

语法 :

初始化语句;

Do{

   循环体语句;

   迭代语句;

}while(循环条件);

例 :

Int I = 0 ;

Do{

   System.out.println("Hello World!");

   i++;

}while( I < 3 );

Do-while循环的特点 : 一定会先执行一次循环体.

5.数组

      数组 : 存储一批同种类型数据的内存区域 .

(1)静态初始化数组

     定义初始化数组的形式   :  数据类型 [ ]  数组名 = new 数据类型 [ ] {元素1 , 元素2 , 元素 3 ...};

                                简写   :  数据类型 [ ] 数组名 = { 元素1 , 元素2 , 元素3 , ...  };

 注意 : 数组变量名中存储的是数组在内存中的地址 , 数组是引用类型 .

Length : 数组的长度属性 .

注意 :

  • 数据类型 [ ] 数组名 也可以写成 数据类型 数组名 [ ] ;
  • 什么类型的数组存放什么类型的数据 , 否则报错 .
  • 数组一旦定义出来 , 程序执行的过程中 , 长度 , 类型就固定 .

(2) 动态初始化数组

        定义数组的时候只确定元素的类型和数组的长度 , 之后再存入具体数据 .

        定义动态初始化数组的形式   :  数据类型 [ ]  数组名 = new 数据类型 [ 长度 ] ;

                                                       int [ ] arr = new int [ 3 ] ;

两种数组定义的特点与区别

  •  当前已经知道存入的元素值 , 用静态初始化 .
  •  当前还不清楚要存入那些数据 , 要动态初始化 .

(3) 数组遍历

遍历 : 数据一个一个的进行访问 .

例 :

Int [ ] arr = { 12 , 45 , 32 , 56 , 32 };

For ( int I = 0 ; I < arr.length ; i++){

     System.out,println( arr [ i ] );

}

(4) 数组的内存分配机制

方法区 : 字节码文件加载时进入的内存 . 

栈内存 : 方法运行时所进入的内存变量也是在这里 .

堆内存 : new 出来的对象会在这块内存中开辟空间并产生地址 .

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值