黑马程序员-(3)Java语法经典列子

------- android培训java培训、期待与您交流! ----------

1.关于类型的转换

class Demo1

{

public static void main(String[] args)

{

byte  b = 3;

b = 2+b;

System.out.println(b);

}

}

结果:编译不能通过,可能损失精度

分析原因:因为byte在内存占2个字节,整数2在内存中占四个字节,当2+b在运算过程会把b自动提升到4个字节进行运算,运算完毕会把占四个字节的5赋予占两个字节的b,这样做就可能损失精度。

解决途径:(1)把 b = 2+b;改为: b = byte(2+b);这叫强制转换,即把占四个字节的数int强制转换成byte

(2)把 b = 2+b;改为:b+=2,因为b+=2在内存中完成了自动强制转换功能

延伸:class Demo3 

{

public static void main(String[] args) 

{

char a = 'b';

System.out.println(5+a);

}

}//输出结果:103

2.最有效率的方式算出2乘以8?

因为将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,而位运算cpu直接支持的,

效率最高,所以,2乘以8等於几的最效率的方法是2 << 3。

3.对两个整数变量的值进行互换:

(1)运用第三方变量

int n = 3,m = 8;

int temp;

temp = n;

n = m;

m = temp;

(2)不用第三方变量。

n = n + m;//如果n和m的值非常大,容易超出int范围。

m = n - m;

n = n - m;

(3)利用一个数异或另一个数两次得到的是原数

n = n ^ m;

m = n ^ m;//(n^m)^m;

n = n ^ m;//n ^ (n ^ m

4.if else 结构可以 简写成三元运算符格式: 变量 = (条件表达式)?表达式1:表达式2

三元运算符:

优点:可以简化if else代码。

弊端:因为是一个运算符,所以运算完必须要有一个结果

5.if和switch语句区别:

如果判断的具体数值不多,而是符合byte short int char这四种类型。

虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。

其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。

6.while和do while的区别:

while:先判断条件,只有条件满足才执行循环体。

do while: 先执行循环体,在判断条件,条件满足,再继续执行循环体。

do while:无论条件是否满足,循环体至少执行一次。

7.(1)什么时候使用循环结构(for和while)?

当要对某些语句执行很多次时,就使用循环结构。

(2)变量有自己的作用域。对于for来讲:如果将用于控制循环的增量定义在for语句中。那么该变量只在for语句内有效。

for语句执行完毕。该变量在内存中被释放。

(3)for和while可以进行互换。如果需要定义循环增量。用for更为合适。

(4)两种最简单的无限循环的表达式:for(;;){}和while(true){}

8.(1)需求:求1到200被8整除的个数

思路:

1,先对1~200进行循环(遍历)通过循环的形式。

2,在遍历的过程中,定义条件。只对8的倍数进行操作。

3,因为8的倍数不确定,只要符合条件,就通过一个变量来记录住这个变化的次数。

步骤:

1,定义循环语句,选择for语句。

2,在循环中定义判断。只要是8的倍数即可。使用if语句。条件:8的倍数 x%8==0;

3,定义变量,该变量随着8的倍数的出现而自增。

class  Demo

{

public static void main(String[] args)

{

int count = 0;//定义一个计数器变量

for (int x=1;x < 200 ;x++ )//for循环遍历1到200

{

if(x%8==0)//是否满足被8整除

count++;//满足就计数一次

}

System.out.println("count=="+count);//输出满足计数的总次数

}

}

总结:器思想

通过一个变量记录住数据的状态变化,也可通过循环完成。

(2)获取1~10的和,并打印。

思路:/*0+1

1+2

3+3

6+4 */

class  ForTest2

{

public static void main(String[] args)

{

//1,定义变量用于存储不断变化的和。

int sum = 0;

//2,定义变量,记录住不断变化的被加的数。

int x = 1;

//3,定义循环,重复加法的过程。

while(x<=10)

{

sum = sum + x;

x++;

}

System.out.println("sum="+sum);

//用for来体现。

int sum = 0;

for(int x=0; x<=10; x++)

{

sum += x;

}

System.out.println("for sum = "+sum);

}

}

循环注意:一定要明确哪些语句需要参与循环,哪些不需要。

累加思想:原理:通过变量记录住每次变化的结果。

通过循环的形式。进行累加动作。

9.for循环嵌套方式

不是规律的规律:

尖朝上,可以改变条件。让条件随着外循环变化。

尖朝下,可以初始化值,让初始化随着外循环变化

(1)九九乘法表:

class JiujiuDemo

{

public static void main(String[] args)

{

for (int x=1;x<=9 ; x++ )//外循环控制行数

{

for (int y=1;y<=x ;y++ )//内循环控制列数

{

System.out.print(y+"*"+x+"="+y*x+"\t");

}

System.out.println();

}

}

}

(2)金字塔


----*

---* *

--* * *

-* * * *

* * * * * *


class  jinzita

{

public static void main(String[] args)

{

for (int x=0; x<5 ;x++ )

{

for(int y=x+1; y<5 ; y++)

{

System.out.print(" ");

}

for(int z=0; z<=x ; z++)

{

System.out.print("* ");

}


System.out.println();

}

}

}

10.break和continue区别:

continue:只能作用于循环结构。继续循环。特点:结束本次循环,继续下一次循环。

break:作用于switch和循环结构,结束循环

注意:1,break和continue语句作用的范围。

2,break和continue单独存在时,下面不可以有任何语句。因为都执行不到。

自我总结:以前看视频时懂了,但过一阵又搞忘了,对知识点不熟悉,现在又重新总结了一下,

以后不清楚可以回来查技术博客,可以巩固学过的知识,所以必须坚持学过一节总结一节的知识!


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值