黑马程序员----Java基本数据类型运算及语法基础
来源:互联网 发布:中差评防御软件 编辑:程序博客网 时间:2024/05/01 18:44
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();//作用是换行
}
- 黑马程序员----Java基本数据类型运算及语法基础
- 黑马程序员-java编程基础,基本数据类型,基本语法及基本语句
- 黑马程序员 Java基础_2 数据类型、运算符及应用
- 黑马程序员——Java基础语法(一)—关键字、标识符、数据类型、运算符
- 黑马程序员--------------java基础语法(—)------常量,变量,数据类型和运算符
- 黑马程序员——高新技术---Java基础语法-数据类型和运算符
- 黑马程序员 ---- java基础之基本语法
- 黑马程序员_二、java基础语法(常量、变量、进制及运算符)
- 黑马程序员 Java基础语法之变量与数据类型
- 黑马程序员——java基础之基本数据类型及操作方法
- 黑马程序员--java基础复习之String类StringBuffer及基本数据类型包装类
- 黑马程序员Java基础第一章----关键字,标识符,数据类型,运算符
- 黑马程序员-----java基础之数据类型和运算符
- 黑马程序员-IOS-OC基础-OC简介及基本语法
- 黑马程序员-IOS-OC基础-OC简介及基本语法
- 【黑马程序员】------java基础语法--关键字、变量、常量、运算符
- 黑马程序员——Java基础语法 之运算符
- 黑马程序员---Java基础篇之Java基本语法
- UML核心视图
- 萝莉和御姐的区别
- 数据结构之图的Java实现
- 【Android开发】随意拖动控件,刷新不回到原位
- 如何用四句话,最精简地总结昨天的工作
- 黑马程序员----Java基本数据类型运算及语法基础
- SearchView的简单用法
- 周一
- 从分布式系统角度的回答阻塞非阻塞与同步异步的区别
- Linux中find常见用法示例
- 契约
- “gcc和g++的区别和联系是什么?
- 想象
- Sizeof与Strlen的区别与联系