Practice| 类型转换| 逻辑运算
类型转换
class Pratice1{
public static void main(String[] args){ int a = 3;
//float f = 4.5;//TypeChangeExer4.java:4: 错误: 不兼容的类型: 从double转换到float可能会有损失,默认是double类型
float f = 4.5F;
long num = 478;//右边是int,左边是long,发生自动类型转换,这个是对的
double d = 35.7;
System.out.println(a + f + num + d);//521.2 int x = 1;
int y = 2;
System.out.println("x + y = " + x + y);//x+y =12
System.out.println("x + y = " + (x + y));//x+y =3
//System.out.println("x - y = " + x - y);//错误的,String不能进行-
System.out.println("x - y = " + (x - y));//x - y = -1
System.out.println("x * y = " + x * y); //x * y = 2
System.out.println("x / y = " + x / y); //x / y = 0 }
}
1:short s = 1;要给s加上2,可以如何实现? BC
A:s = s + 2;
B:s += 2; s += 2 <===> s = (short)(s + 2);
C:s = (short)(s + 2);
D:s = (short)s + 2; int week = (today + 100)%7;
System.out.println(week==0 ? "周日": ("周" + week)); char c = 'A';
//(1)先知道大写字母与小写字母之前有什么联系
//大写字母:A 编码值是65,B:66..
//小写字母:a 编码值是97,b:98...
//(2)char与int类型混合运算,会自动升级为int
//(3)当把int类型的结果赋值给一个char类型的变量,需要强制类型转换
char xiao = (char)(c + 32);
System.out.println(xiao); // a int i = 2;
int j = ++i * i-- + i++ * --i; //
if(--i==2 && j--==2){
i = 5;
}
System.out.println("i = " + i);//
System.out.println("j = " + j);//
运算
class Pratice1{
public static void main(String[] args){
short s = 1;
short sum = (short) (s + 2);
System.out.println(sum); //3
/*
int i = 1;
i *= 0.2;//赋值运算 进行了强制类型转换-->> 0 i *= 0.2 <===> i = (int)(i*0.2)
i++; //1
System.out.println("i=" + i); int i = 1;
System.out.println("i = " + i);//1
++i;
System.out.println("i = " + i);//2 i++;
System.out.println("i = " + i);//3
*/ /*
int i = 1;
int j = ++i;//(1)先执行++i,值为2(2)会把i=2的值load放到一个“操作数栈(理解为专门计算的地方)”(3)把操作数栈中的值赋值给j
int k = i++;//(1)先把i=2的值load放到一个“操作数栈(2)执行是i++,i=3(3)执行赋值,把操作数栈中的2赋值给k
System.out.println("i = " + i);//3
System.out.println("j = " + j); //2
System.out.println("k = " + k); //2
*/ int i = 2;
i *= i++; //先把i=2的值load到操作栈;然后自增i=3;再把操作栈里边的值2进行计算2*2 int j = 2;
j *= j + 1;// j = j * (j+1) -->> j = 2*3=6 int k = 2;
k *= ++k; //先自增k=3,再把k=3的值放到操作栈里边,然后k = k * (++k) = 2 * 3 System.out.println("i=" + i);//
System.out.println("j=" + j);//
System.out.println("k=" + k);// int h = 1;
int q = ++h + h++ * ++h;
/*
1.先执行++h,先自增h=2,然后把值2 load到操作栈里边;
执行h++,此时已经把h=2值load到操作栈里边,再自增h=3;
最后执行++h,先自增为4,把值4load到操作栈里边;
2. 把2和4从操作栈里边弹出进行计算得到8=2*4,最后再弹出8和最早的2计算得:10=8+2
*/
System.out.println("h = " + h); // h = 4
System.out.println("q = " + q); // q = 10
class Pratice1{
public static void main(String[] args){ int i = 1;
int j = 2;
int k = i++ * ++j; // 先把i=1的值load到操作栈里边,再自增为2; j先自增为3,然后把值3load到操作栈里边;最后1*3
int m = i + j++; //j的值为3,先把j=3load到操作栈,再自增为4;i=2; 6 = 2+3
System.out.println(i); //
System.out.println(j); //
System.out.println(k); //
System.out.println(m); // }
}
逻辑运算
如 && 和 & 的比较
class Pratice1{
public static void main(String[] args){ //int x = 1;
//int y = 1; //左边:先把x=1load到操作栈里边,再自增为x=2,最后把值1弹出来做判断1==2?为false
//右边继续因为是逻辑与:先y自增为2,再把值2load到操作栈里;最后判断2 == 2? 为true
//逻辑运算最后结果为 false & true --->>false
/*
if(x++ == 2 & ++y == 2){
x = 7;
}
System.out.println("x=" + x + ",y=" + y);//x=2,y=2
*/ //左边:先把x=1load到操作栈里边,再自增为x=2,最后把值1弹出来做判断1==2?为false
//右边不用算了,因为是短路与&&,左边已经是false;
//逻辑运算最后结果为 false & ? --->>false
/*
if(x++ == 2 && ++y == 2){
x = 7;
}
System.out.println("x="+x+",y="+y);//x=2,y=1
*/ //左边:先把x=1load到操作栈里边,再自增为x=2,最后把值1弹出来做判断1==1?为true
//右边:继续,因为中间是逻辑或 | ;自增y=2,把值2load到操作栈,最后2 == 1?为false
//逻辑运算最后结果为 true & false --->>true
/*
if(x++ == 1 | ++y == 1){
x = 7;//x=7
}
System.out.println("x=" + x + ",y=" + y);//x=7,y=2
*/ /*
左边:true
(1)先把x=1的值load到“操作数栈”
(2)x++,x=2
(3)用“操作数栈”的值1 与 1 比较,成立 右边:不算,因为中间是 || ,短路或 true || ? 结果为true,即if成立
*/
/*
if(x++==1 || ++y==1){
x = 7;//x=7
}
System.out.println("x="+x+",y="+y);//x=7,y=1
*/ boolean x = true;
boolean y = false;
short z = 42; //左边:先把值42load到操作栈,自增z=43,42 == 42? -->true;
//右边:短路与&&,左边是true,不满足短路情况继续判断:y=false的值load到“操作数栈”,用“操作数栈”的值false 与true比较,不成立-->false;
// true && false -->>false /*
if( (z++==42) && (y==true) ) z++; //false || false(操作栈里为z=44,44=45? 为false) -->>false, if不成立
if( (x=false) || (++z==45) ) z++; System. out.println("z = " + z);// z=44
*/ if(y = true)//赋值y = true
//把y=true的值load到“操作数栈”,用“操作数栈”的值true 与true比较,成立
if( (z++==42) && (y==true) ) z++; //true && true -->>true , z=44;
//左边:false直接把false赋值给x;
//右边:算,虽然是短路或,但是因为不满足短路的情况; ++z,z=45;把z=45的值load到“操作数栈”;用“操作数栈”的值45与45比较,成立 true
if( (x=false) || (++z==45) ) z++; //false || true -->>true ,z=46
System. out.println("z = " + z); //z = 46 }
}
两个变量的交换
class TestHomework7{
public static void main(String[] args){
int a = 1;
int b = 2;
System.out.println("a = " + a + ",b = " + b);
//交换
//(1)方法一:最通用的方法,适用于任何类型,要求必须掌握的方法
/*
//第三个变量的类型与这两个需要交换的变量的类型一致就可以
int temp = a;//先把a的值存到了temp
a = b;//把b的值存到了a中
b = temp;
*/
//(2)方法二:适用于整数类型
/*
a = a ^ b;
b = a ^ b;//结果等价于 b = 原来的a ^ 原来的b ^ 原来的b; b = 原来的a;
//一个整数与另一个整数异或两遍,就是它本身
a = a ^ b;//结果等价于 a = 原来的a ^ 原来的b ^ 新的b(原来的a) = 原来的b
*/ //(3)方法三:适用于整数类型
a = a + b;
b = a - b;//结果等价于b = 原来的a + 原来的b - 原来的b = 原来的a
a = a - b;//结果等价于a = 原来的a + 原来的b - 现在的b(原来的a) = 原来的b System.out.println("交换后:");
System.out.println("a = " + a + ",b = " + b);
}
}
三个数的比较排序
class Pratice{
public static void main(String[] args){ java.util.Scanner input = new java.util.Scanner(System.in); System.out.print("Please input Number1:");
int num1 = input.nextInt(); System.out.print("Please input Number2:");
int num2 = input.nextInt(); System.out.print("Please input Number3:");
int num3 = input.nextInt(); /*
num1 >= num2 >= num3
num1 >= num3 >= num2
num2 >= num1 >= num3
num2 >= num3 >= num1
num3 >= num1 >= num2
num3 >= num2 >= num1
*/ if(num2 <= num1 && num2 >= num3 ){
System.out.println(num1 + ">=" + num2 + ">=" + num3);
}else if(num3 <= num1 && num3 >= num2){
System.out.println(num1 + ">=" + num3 + ">=" + num2);
}else if(num2 >= num1 && num1 >= num3){
System.out.println(num2 + ">=" + num1 + ">=" + num3);
}else if(num2 >= num3 && num3 >= num1){
System.out.println(num2 + ">=" + num3 + ">=" + num1);
}else if(num3 >= num1 && num1 >= num2){
System.out.println(num3 + ">=" + num1 + ">=" + num2);
}else{
System.out.println(num3 + ">=" + num2 + ">=" + num1); }
}
}
方法2:
class Pratice{
public static void main(String[] args){ java.util.Scanner input = new java.util.Scanner(System.in); System.out.print("请输入第一个整数num1:");
int num1 = input.nextInt(); System.out.print("请输入第二个整数num2:");
int num2 = input.nextInt(); System.out.print("请输入第三个整数num3:");
int num3 = input.nextInt(); if (num1 >= num2){
//num1 >= num2 >= num3
//num3 >= num1 >= num2
//num1 >= num3 >= num2
if(num2 >= num3){
System.out.println(num1 + ">=" + num2 + ">=" + num3);
}else{
if(num3 >= num1){
System.out.println(num3 + ">=" + num1 + ">=" + num2);
}else{
System.out.println(num1 + ">=" + num3 + ">=" + num2);
}
}
}else{
//num2 >= num1 >= num3
//num3 >= num2 >= num1
//num2 >= num3 >= num1
if(num1 >= num3){
System.out.println(num2 + ">=" + num1 + ">=" + num3);
}else{
if(num3 >= num2){
System.out.println(num3 + ">=" + num2 + ">=" + num1);
}else{
System.out.println(num2 + ">=" + num3 + ">=" + num1);
}
}
} /* 下面应该是没有这种结构
if(num1 >= num2){
if(num2 >= num3){
System.out.println(num1 + ">=" + num2 + ">=" + num3);
}else{
System.out.println(num1 + ">=" + num3 + ">=" + num2);
if(num2 >= num1){
if(num1 >= num3){
System.out.println(num2 + ">=" + num1 + ">=" + num3);
}else{
System.out.println(num2 + ">=" + num3 + ">=" + num1);
if(num3 >= num1){
if(num1 >= num2){
System.out.println(num3 + ">=" + num1 + ">=" + num2);
}else{
System.out.println(num3 + ">=" + num2 + ">=" + num1);
}
}
}
}
}
}
*/ }
}
保存一个汉字有两种类型 char 和 String
class Pratice4{
public static void main(String[] args){
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("身高:");
int height = input.nextInt(); System.out.print("财富(千万):");
double money = input.nextDouble(); //方法一boolean类型
//System.out.print("帅否(true/false):");
//boolean yan = input.nextBoolean(); /*
if(height >= 180 && money >= 1 && yan){
System.out.println("我一定要嫁给他!!!");
}else if(height >= 180 || money >= 1 || yan){
System.out.println("嫁吧,比上不足,比下有余。");
}else{
System.out.println("不嫁!");
} ////保存一个汉字有两种类型:char和String
//方法二:char类型
//System.out.print("帅否(是/否):");
//char yan = input.next().charAt(0); if(height >= 180 && money >= 1 && yan == '是'){
System.out.println("我一定要嫁给他!!!");
}else if(height >= 180 || money >= 1 || yan == '是'){
System.out.println("嫁吧,比上不足,比下有余。");
}else{
System.out.println("不嫁!");
}
*/ //方法三:String
System.out.print("帅否(是/否):");
String yan = input.next(); if(height >= 180 && money >= 1 && yan.equals("是")){
System.out.println("我一定要嫁给他!!!");
}else if(height >= 180 || money >= 1 || yan.equals("是")){
System.out.println("嫁吧,比上不足,比下有余。");
}else{
System.out.println("不嫁!");
} }
}
随机数的产生
int num1 = (int)((Math.random()) * 6 + 1);//[0,1) -->*6-> [0,6) --> +1 ->[1,7)
Practice| 类型转换| 逻辑运算的更多相关文章
- scjp考试准备 - 2 - 逻辑运算及类型转换
判断如下代码的执行结果: public class Spock{ public static void main(String[] args){ Long tail = 2000L; Long dis ...
- JavaScript系列文章:自动类型转换-续
在上一篇文章中,我们详细讲解了JavaScript中的自动类型转换,由于篇幅限制,没能覆盖到所有的转换规则,这次准备详细讲解一下. 上次我们提到了对象类型参与运算时转换规则: 1). 在逻辑环境中执行 ...
- 初识 Javascript.02 -- Date日期、Math对象、数据类型转换、字符串、布尔Boolean、逻辑运算符、if else 、三元表达式、代码调试方法、
Date()对象: Date对象用于处理日期和时间. 1.1 Math对象 ◆Math.ceil() 天花板函数 向上取整 只取整数,不足则进1 ◆Math.floor() 地板函数 ...
- [C语言]进阶|数据类型: 整数, 浮点, 逻辑, 类型转换和条件运算
--------------------------------------------------------------------------------- [C语言的类型] 1. 整型(都分为 ...
- C# 的逻辑运算
&.^.!和|操作符称为逻辑操作符,用逻辑操作符把运算对象连接起来符合C#语法的式子称为逻辑表达式.逻辑 操作符“!”和“^”只作用于其后的操作数,故称为一元操作符.而“&&” ...
- python基础-02-while格式化逻辑运算
python其他知识目录 1.循环打印“我是小马过河” while True: print('我是小马过河') #4.用while从一打印到10 #5.请通过循环,1 2 3 4 5 6 8 9 ...
- JavaScript变量不同类型之间的自动、手动类型转换
转换成字符型:toString() var str = 123; str.toString();转换成字符串 将str从数值型变成字符型 浮点数: 电脑在运算过程中以正确的 ...
- JavaScript中判断变量类型最简洁的实现方法以及自动类型转换(#################################)
这篇文章主要介绍了JavaScript中判断整字类型最简洁的实现方法,本文给出多个判断整数的方法,最后总结出一个最短.最简洁的实现方法,需要的朋友可以参考下 我们知道JavaScript提供了type ...
- JavaScript之数据类型转换
JavaScript中有多种数据类型,在实际工作中,不管是有意还是无意的,我们总能碰到不一样的数据类型值之间进行运算,或者我想从用户输入获得一个数字时,而用户却输入了一个字符串,这种时候就需要用到今天 ...
随机推荐
- 【原创】大叔经验分享(37)CM清理磁盘空间
定期清理cloudera manager server的磁盘空间 1 停止Service Monitor和Host Monitor 2 删除日志 # /bin/rm /var/lib/cloudera ...
- 如果Android真的收费了,你怎么看?
前言 今天突然看到一群里有人发了下面这样一张图片,然后群里又炸了! 于是又和同事讨论了android收费的问题,然后隔壁正在玩农药的UI妹子就笑了... 没错! 安卓可能要收费了!安卓可能要收费了 ...
- Confluence 6 workbox 的位置
Confluence 6 workbox 的位置在首页什么地方? workbox 应该在页面顶部的用户登录后的地方. https://www.cwiki.us/display/CONFLUENCEWI ...
- ionic3 打包报错[ERROR] An error occurred while running cordova prepare (exit code 1):
解决办法:删除并重新添加平台以使用以下命令解决问题: cordova platform rm ios cordova platform add ios 如果执行 ionic cordova build ...
- C#概念总结(三)
1.定义结构体 定义了结构体,必须使用了stuct语句,struct定义了一个带有多个成员的的新数据类型.C# 的结构不同于C的.具有一下等特点: 结构可以有方法.字段.索引.属性.运算方法和事件.结 ...
- 雅礼 noip2018 模拟赛day3 T2
典型的状压思想 设0表示黑球,1表示白球,用一串01序列代表剩下的球的状态,记f[i]表示在i状态下取球的最大期望 那么可以利用记忆化搜索更新,每一层枚举可能拿走的球然后向下搜索,同时记忆化即可 在状 ...
- solt插槽简单使用实例
在父组件内可以定义方法,变量 等,还可以在父组件中使用呢. 样式可以在子组件里写,也可以在父组件写. 子组件: <template> <div class="admin-u ...
- Java 单字节、多字节读取文本文档中的内容
文本文档位于工程下. 鼠标右击工程,选择“new - File”,即可创建. 文本文档的格式:GBK 单字节读取 import java.io.File; import java.io.FileInp ...
- 为什么访问json接口出现文件下载
在IE9,10,11下,当服务器端返回数据格式为json,且明确设置Content-Type为”application/json;charset=utf-8“时,会提示文件下载.如图所示: 解决办法是 ...
- spring cloud 声明式rest客户端feign调用远程http服务
在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端.Feign就是Spring Cloud提供的一种声明式R ...