黑马程序员----Java基本数据类型运算及语法基础

来源:互联网 发布:中差评防御软件 编辑:程序博客网 时间:2024/05/01 18:44
------- android培训、java培训、期待与您交流! ----------



Java基本数据类型运算及语法基础



Java基本数据类型及运算

1,关于byte类型数据的使用注意事项

byte b = 2;
b = (b + 2)会出现自动类型提升,b以int型参与计算,返回的int类型数值会赋给b,
会损失精度,所以会编译失败,应进行强制类型转换,变为b =(byte)(b + 2);

System.out.println(b); // b = 4

但直接进行+=计算是可行的
b += 2;
System.out.println(b + "--" + ((Object)b).getClass().getName());//6   Byte

下面的赋值则是可行的
b = 3 + 4;

System.out.println(b);//b=7


//以下代码可返回b的数据类型,因为byte是基本数据类型,所以必须封装成对象对能调用getClass()方法
System.out.println(((Object)b).getClass().toString());//Byte

2,字符类型数据与int数据类型间的转换

char ch = 'a';
System.out.println(ch+1);//自动类型提升,输出为98

3,除与模的基本运算

System.out.println(-1%5);// -1
System.out.println(1%5);//   1
System.out.println(1/5);//   0
System.out.println(-1/5);//  0

4,"+" 号连接符

System.out.println("5+5="+(5+5));//5+5=10
System.out.println("5+5="+5+5);//5+5=55

5,转义字符 "\"

System.out.println("hello\tjava");//hello  java
System.out.println("hello\r\njava");//hello  
java

System.out.println('\'');// 结果为 ' , 因为\是转义字符

6,逻辑运算

重点:逻辑运算符用于连接boolean类型的表达式

!(true & true) = false;
!(false & false) = true;

^ : 两边相同结果是false。
两边不同结果是true。

&和&&的特点:
&:无论左边是true是false。右边都运算。
&&:当左边为false时,右边不运算。

|和||的特点:
|:两边都参与运算。
||:当左边为true。右边不运算。

&的应用:
如果想取出int型数值的有效位,可以用&一个数值的方式实现,如:
int a = 60;
a = a & 15;//12
System.out.println(a);


a = a>>>4;//此处也是位运算符的应用,右移的一般是>>>,因为高位需要补位,左移可以直接<<
System.out.println(a);//0

另外位运算符也是实现计算的最快速方式,如
int x = 3 * 8;//24
int y = 3 << 3;//24
System.out.println(x==y);//true

7,常见技巧

交换两个变量的值
1,通过第三方变量。

int temp = n;
n = m;
m = temp;

2,通过 ^   这种两次异或有时也可以做为加密解密的一种方法
n = n ^ m;
m = n ^ m;//(n^m)^m;
n = n ^ m;//n ^ (n ^ m)
System.out.println("n="+n+",m="+m);


Java语法基础

1,if语句

if else 结构 简写格式: 变量 = (条件表达式)?表达式1:表达式2;

三元运算符:
好处:可以简化if else代码。
弊端:因为是一个运算符,所以运算完必须要有一个结果。

2,switch 的定义及应用

例1:
int s = 3;

switch(s)//byte short int char
{

case 4:
System.out.println("a");
break;
case 6:
System.out.println("b");
break;
default:
System.out.println("d");
break;
case 2:
System.out.println("c");
break;
如果没有到到匹配的值,那么会找到default,如果default没有break的话,那么会执行到下面有break的返回,
如果都没有break,则会执行到最后一行结束.
一般情况default是在最后一行,且没有break


例2:根据用于指定月份,打印该月份所属的季节。
3,4,5 春季 6,7,8 夏季  9,10,11 秋季 12, 1, 2 冬季

int x1 = 4;


switch(x1)
{
case 3:
case 4:
case 5:
System.out.println(x1+"月份春季");
break;

case 6:
case 7:
case 8:
System.out.println(x1+"月份夏季");
break;
case 9:
case 10:
case 11:
System.out.println(x1+"月份秋季");
break;
case 12:
case 1:
case 2:
System.out.println(x1+"月份冬季");
break;
default:
System.out.println("nono");
}

小结: if和switch语句很像。
具体什么场景下,应用哪个语句呢?
如果判断的具体数值不多,而是符合byte short int char这四种类型。
虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。


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


定义初始化表达式;

3,循环,break,continue

while(条件表达式)
{
循环体(执行语句);
}

int x = 1;
while(x<3)
{
System.out.println("x="+x);
x++;
}
while:先判断条件,只有条件满足才执行循环体。
do while: 先执行循环体,在判断条件,条件满足,再继续执行循环体。
简单一句话:do while:无论条件是否满足,循环体至少执行一次。

break:一般情况下是结束最近的循环,但是如果有标记,可以结束任意标记的循环
w:for(int x=0; x<3; x++)
{
for(int y=0; y<4; y++)
{
System.out.println("x="+x);
break w;
}
}

continue:只能作用于循环结构。继续循环。特点:结束本次循环,继续下一次循环。
continue同样可以用于结束标记的循环

for(int x=1; x<=10; x++)
{
if(x%2==1)
continue;
System.out.println("x="+x);
}

w:for(int x=0; x<3; x++)
{
for(int y=0; y<4; y++)
{
System.out.println("x="+x);
continue w;
}
}
记住:
1,break和continue语句作用的范围。
2,break和continue单独存在时,下面不可以有任何语句。因为都执行不到。

4,实例练习:

例1:用循环嵌套的方法打印出九九乘法表


//控制纵向长度
for(int x2=1; x2<=9; x2++)
{

//控制横向长度
for(int y2=1; y2<=x2;y2++)
{
System.out.print(y2+"*"+x2+"="+y2*x2+"\t");// \t是制表符
}
System.out.println();
}

1*1=1
1*2=2 2*2=4
1*3=3 2*3=63*3=9
1*4=4 2*4=83*4=124*4=16
1*5=5 2*5=103*5=154*5=205*5=25
1*6=6 2*6=123*6=184*6=245*6=306*6=36
1*7=7 2*7=143*7=214*7=285*7=356*7=427*7=49
1*8=8 2*8=163*8=244*8=325*8=406*8=487*8=568*8=64
1*9=9 2*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81



例2:打印出如下图所示的图形


----*
---* *
--* * *
-* * * * 
* * * * * 


* * * * * 
-* * * *
--* * * 
---* *
----* 

//外部循环
for(int x4=1; x4<6; x4++)
{

//内部循环1
for(int z=5-x4; z>0;z--)
{
System.out.print('-');//打印-
}

//内部循环2
for(int y4=1;y4<=x4;y4++)
{
System.out.print("* ");//打印*
}
System.out.println();//作用是换行
}







0 0
原创粉丝点击