Java学习第02天-类型转换、运算符

目录

类型转换

自动类型转换

表达式的自动类型转换

强制类型转换

运算符

基本运算符

案例解答

+连接字符串

自增自减运算符

面试习题

赋值运算符

比较运算符

逻辑运算符

基本逻辑运算符

短路逻辑运算符

三元运算符

基础知识

拓展案例

运算符优先级

读取用户输入


类型转换

自动类型转换

类型范围小的变量,可以直接赋值给类型范围大的变量。

public class AutoTypeTran {public static void main(String[] args) {char a = 'a';int res = a;System.out.println(a);System.out.println(res);}
}

表达式的自动类型转换

  • 表达式的最终结果类型由表达式中的最高类型决定;
  • 表达式中,byte、short、char 是直接转换成int类型参与运算的;
public class AutoTypeTran2 {public static void main(String[] args) {byte a = 'a';short b = 21;double c = 4.25;double res = a + b + c;System.out.println(res);// byte、short、char是直接转换成int类型参与运算的;byte d = 'e';short e = 156;// byte m = d + e;  // 报错int m = d + e;System.out.println(m);}
}

强制类型转换

数据类型 变量 = (数据类型) 变量/数据;

  • 可能出现数据丢失;
  • 小数强制转换成整数是直接截断小数保留整数。
public class TypeTran {public static void main(String[] args) {// 正常强制类型转换int a = 20;byte res = (byte) a;System.out.println(res);  // 20// 溢出 / 数据丢失int b = 800;res = (byte) b;System.out.println(res);  // 32// 浮点数强转成整型double score = 99.5;int res2 = (int) score;System.out.println(res2);  // 99}
}

运算符

基本运算符

符号包括:+ - * / %

对应的含义:加 减 乘 除 取余

!需要注意:在Java中两个整数相除,得到的还是整数

public class Operation {public static void main(String[] args) {// 加、减、乘、除、取余int a = -110;int b = 15;System.out.println(a + b);  // -95System.out.println(a - b);  // -125System.out.println(a * b);  // -1650System.out.println(a / b);  // -7 [去除小数点后面的数据]System.out.println(a % b);  // -5// 补充:整数除以整数想要得到小数System.out.println(1.0 * a / b);  // -7.333333333333333}
}

案例解答

解析3位整数的百位、十位、个位的数字,并输出。

public class CaseOperation {public static void main(String[] args) {int pendingData = 123;System.out.print("这是个位:");System.out.println(pendingData % 10);System.out.print("这是十位:");System.out.println(pendingData / 10 % 10);System.out.print("这是百位:");System.out.println(pendingData / 10 / 10 % 10);}
}

+连接字符串

‘+’符号与字符串运算的时候用作连接符,结果是字符串。

public class ConnectString {public static void main(String[] args) {int a = 20;System.out.println(a + "abcd");  // 20abcdSystem.out.println(a + 'a');  // 117System.out.println(a + 20 + 'a' + "abcd");  // 137abcdSystem.out.println("abcd" + a + 20 + 'a');  // abcd2020a}
}

自增自减运算符

++ 和 -- 既可以放在变量的后边,也可以放在变量的前面;

++ 和 -- 只能操作变量,不能操作字面量;

放在变量的前面,则是先运算,放在变量后面,则是先取值;

public class AddSelf {public static void main(String[] args) {int i = 10;int j = i++;System.out.println(i);  // 11System.out.println(j);  // 10int a = 10;int b = ++a;System.out.println(a);  // 11System.out.println(b);  // 11}
}

面试习题

推测下面的输出

public class AddSelfCase {public static void main(String[] args) {int c = 10;int d = 5;//  c 10 11 12 11//  d 5 4 5//  res = 10  + 12  - 4   - 5   + 1 + 12int res = c++ + ++c - --d - ++d + 1 + c--;System.out.println(c);  // 11System.out.println(d);  // 5System.out.println(res);  // 26}
}

赋值运算符

基本赋值运算符:=

拓展赋值运算符:+=、-=、*=、/=、%=

其中拓展赋值运算符:a += b 等价于 a = (a 的数据类型) (a + b);

public class Assignment {public static void main(String[] args) {byte a = 10;byte b = 30;// a = a + b;  // 报错a += b;  // 等价于 a = (byte) a + b;}
}

比较运算符

public class Comparative {public static void main(String[] args) {int a = 10;int b = 10;System.out.println(a == b);  // trueSystem.out.println(a != b);  // falseSystem.out.println(a > b);  // falseSystem.out.println(a < b);  // falseSystem.out.println(a >= b);  // trueSystem.out.println(a <= b);  // true// 下面不是比较运算符,只是用来对比观察System.out.println(a = b);  // 10}
}

逻辑运算符

基本逻辑运算符

符号介绍说明
&逻辑与两者全为 true ,结果才为 true
|逻辑或两者有一个为 true ,结果就是 true
!逻辑非相反
^逻辑异或相同为false,不同为true

短路逻辑运算符

符号介绍
&&逻辑与(左边为 false ,右边则不执行)
||逻辑或(左边为 true, 右边则不执行)

注意:实际开发中,常用的逻辑运算符还是:&&、||、!

public class Logical {public static void main(String[] args) {int a = 10;double money = 800;System.out.println(a > 5 & money > 500);System.out.println(a > 11 && money++ > 500);System.out.println(money);// true// false// 800.0}
}

三元运算符

基础知识

格式:条件表达式 ? 值1 : 值2;

执行流程,首先计算关系表达式的值,如果是 true , 返回值1;否则返回值2.

public class Ternary {public static void main(String[] args) {// 格式:条件表达式 ? 值1 : 值2;// 需求: 找出两个整数中较大的值int a = 10;int b = 20;int res = a > b ? a : b;System.out.println(res);}
}

拓展案例

求三个整数的最大值

public class Ternary2 {public static void main(String[] args) {int a = 10;int b = 20;int c = 3343;int temp = a > b ? a : b;int max = temp > c ? temp: c;System.out.println(max);System.out.println("--------------方法二--------------");max = a > b ? (a > c ? a : c) : (b > c ? b : c);System.out.println(max);}
}

运算符优先级

优先级运算符
1()
2!、-、++、--
3*、*、%
4+、-
5<<、>>、>>>
6<、<=、>、>=、instanceof
7==、!=
8&
8^
10|
11&&
12||
13?:
14=、+=、-=、*=、/=、%=、&=
public class Priority {public static void main(String[] args) {int a = 10;System.out.println(a > 5 || a > 5 && a > 15);System.out.println((a > 5 || a > 5) && a > 15);// true// false}
}

读取用户输入

  • 导包:import java.util.Scanner;
  • 创建扫描器对象:Scanner sc = new Scanner(System.in);
  • 接收用户输入的数据:sc.nextInt(); 或者 sc.next();
import java.util.Scanner;public class ScannerDemo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输出您的名字:");String name = sc.next();System.out.println("请输出你的年龄:");int age = sc.nextInt();System.out.println("Hello " + name + ", 你已经" + age + "岁了!");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/661865.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DICOM 测试工具

一个DICOM测试工具。 引用了 fo-dicom 。fo-dicom 算是比较好用的&#xff0c;我的另外一个项目也是用了它。 using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; …

【C++STL详解(四)】--------vector的模拟实现

前言 还是那句话&#xff1a;模拟实现不是为了比库里面更好&#xff0c;而是去学习它的一些底层&#xff0c;能够让自己有更深的了解&#xff0c;为了更好的熟用&#xff01; vector底层图 由上图可以看出&#xff0c;它的底层实际上就是原生的指针T*&#xff0c;只不过会存在三…

可视化大屏也在卷组件化,组件绝对是效率利器呀。

组件化设计在B端上应用十分普遍&#xff0c;其实可视化大屏组件更为规范&#xff0c;本期分享组件化设计的好处&#xff0c;至于组件源文件如何获取&#xff0c;大家都懂的。 组件化设计对可视化大屏设计有以下几个方面的帮助&#xff1a; 提高可重用性&#xff1a; 组件化设…

SpringBoot指标监控

一.SpringBoot指标监控_添加Actuator功能 Spring Boot Actuator可以帮助程序员监控和管理SpringBoot应用&#xff0c;比如健康检查、内存使用情况统计、线程使用情况统计等。我 们在SpringBoot项目中添加Actuator功能&#xff0c;即可使用Actuator监控 项目&#xff0c;用法如…

启明云端2.4寸屏+ESP32-S3+小型智能调速电动家用除草机案例 触控三档调速,能显示电压故障码

今天给大家分享个启明云端2.4寸屏ESP32-S3小型智能调速电动家用除草机案例&#xff0c;国外有草坪文化&#xff0c;这个机器能智能触控三档调速&#xff0c;带屏能显示电压故障码&#xff0c;数显档位&#xff08;3档最大&#xff09;&#xff0c;触控屏&#xff0c;长按3秒就能…

C#技巧之窗体去鼠标化

简介 在窗体程序中不用鼠标&#xff0c;直接使用键盘完成想要的操作。 实现的方法有两种&#xff0c;一种是使用键盘上的Tab键使控件获得焦点&#xff0c;然后用enter键触发该控件上的事件&#xff08;一般为click事件&#xff09;。另一种是&#xff0c;为控件添加快捷键&am…

附录6-1 黑马优购项目-组件与过滤器

目录 1 过滤器-格式化价格 2 组件-搜索框 3 组件-数量框 4 组件-商品概况 4.1 格式化价格 4.2 选择性使用勾选框和数量框 4.3 源码 1 过滤器-格式化价格 这个项目中仅用到格式化价格这一种过滤器。过滤器文件位置为store/filter.wxs 文件内容是这样的&#xf…

APT预警攻击平台截获Nday

APT预警攻击平台截获Nday 2024年4月26日 设备漏洞【漏洞利用】H3C Magic R100任意代码执行漏洞(CVE-2022-34598) 0000 &#xff1a; 0010 &#xff1a; 0020 &#xff1a; 0030 &#xff1a; 0040 &#xff1a; 0050 &#xff1a; 0060 &#xff1a; 0070 &#xff1a;6F 72…

MySQL基础学习(待整理)

MySQL 简介 学习路径 MySQL 安装 卸载预安装的mariadb rpm -qa | grep mariadb rpm -e --nodeps mariadb-libs安装网络工具 yum -y install net-tools yum -y install libaio下载rpm-bundle.tar安装包&#xff0c;并解压&#xff0c;使用rpm进行安装 rpm -ivh \ mysql-communi…

【热闻速递】Google 裁撤 Python研发团队

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 【&#x1f525;热闻速递】Google 裁撤 Python研发团队引入研究结论 【&#x1f5…

Liunx发布tomcat项目

Liunx在Tomcat发布JavaWeb项目 1.问题2.下载JDK3.下载Tomcat4.Tomcat本地JavaWeb项目打war包、解压、发布5.重启Tomcat,查看项目 1.问题 1.JDK 与 Tomcat 版本需匹配&#xff0c;否则页面不能正确显示 报错相关&#xff1a;Caused by: java.lang.ClassNotFoundException: java…

通过Servlet和JSP,结合session和application实现简单网络聊天室(文末附源码)

目录 一.成品效果 二.代码部分 chat.jsp ChatServlet 一.成品效果 在启动成功后&#xff0c;我们就可以在任意俩个浏览器页面中相互发消息&#xff0c;如图所示左边屏幕使用的是Edge浏览器&#xff0c;右图使用的是火狐浏览器。当然笔者这里只是简单实现最基本的一些功能&…