1.3.3类型转换
public class Tall {
public static void main(String[] args) {
// TODO Auto-generated method stub
int foot;
double inch;
Scanner in=new Scanner(System.in);
foot=in.nextInt();
inch=in.nextDouble();
System.out.println(10/3);
System.out.println("foot="+foot+",inch"+inch);
System.out.println((foot+inch/12)*0.3048);
}
}
*基本数据类型从低到高:
byte<short<char<int<long<float<double
*类型低的可以自动转换为类型高的:例如 int转换成double自动转换 反之需要手工或者强制转换–前面+(int)+后面需要转换的括上括号即可
2.1.1 关系运算
*计算两个值之间的关系,所以叫关系运算
==
!=
< >
<= >=
优先级
算术运算>关系运算>逻辑运算符>赋值运算
*注:
JAVA的运算符,分为四类:
算数运算符、关系运算符、逻辑运算符、位运算符
算数运算符(9):+ - * / % ++ –
关系运算符(6):== != > >= < <=
逻辑运算符(6):&& || ! ^ & |
位运算符(7):& | ~ ^ >> << >>>;
*判断是否相等的优先级比其他的低,而连续的关系运算是从左到右进行的
*true和false不能比较大小
*float浮点运算存在误差
*判断两个浮点数是否相等:用比较大小的方法:
前面+Math.abs(f1-f2)<f1
2.2.1比较
自动售票机程序实现:
public class Tall {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
//读入投币金额
System.out.print("请投币:");
int amount=in.nextInt();
System.out.println(amount);//判断
System.out.println(amount>=10);//判断
//打印车票
System.out.println("****************");
System.out.println("*JAVA城际铁路专线*");
System.out.println("*无指定座位票*");
System.out.println("*票价:10元*");
System.out.println("****************");
//计算并打印找零
System.out.println("找零:"+(amount-10));
}
}
2.2.1if判断
上图通过if语句改进后:
public class Main {
public static void main(String[] args) {
//读入投币金额
System.out.print("请投币:");
int amount=in.nextInt();
System.out.println(amount);//判断
System.out.println(amount>=10);//判断
if(amount>=10){
//打印车票
System.out.println("****************");
System.out.println("*JAVA城际铁路专线*");
System.out.println("*无指定座位票*");
System.out.println("*票价:10元*");
System.out.println("****************");
//计算并打印找零
System.out.println("找零:"+(amount-10));
}
}
}
比较数的大小
Scanner in=new Scanner(System.in)
int x=in.nextInt();
int y=in.nextInt();
int max;
if(x>y)
max=x;
if(y>x)
max=y;
System.out.println(max);
改进方案一:
Scanner in=new Scanner(System.in)
int x=in.nextInt();
int y=in.nextInt();
int max;
if(x>y)
max=x;
else
max=y;
System.out.println(max);
改进方案二:
Scanner in=new Scanner(System.in)
int x=in.nextInt();
int y=in.nextInt();
int max=x;
if(y>x)
max=y;
System.out.println(max);
2.3.1级联和嵌套的判断语句
三重判断:x、y、z的大小判断
此处代码省
*else总是与最近的If匹配
*加括号是个好习惯
*单一出口 is better style
级联:
同时出现esle、else if、else
if(x<0){
f=-1;
}
esle if (x==0){//再判断
f=0;}
esle{
f=2*x}
注:所有的else与if并列
2.3.2多路分支
seitch-case语句:
switch(控制表达式){
case常量:
语句
...
case 常量:
语句
...
default:
语句
...//所有的case都不满足时进入default
}
*程序如果没有遇到break则会一直进行下去
2.4关于if语句常见的错误
- if后面忘记+{ }
- if后面忘记加分号;
- 错误使用=和== (注:if后面的()内只有0/非0)
- if大括号中的语句要缩进一个tab的位置