首页 > 编程语言 >java从入门到起飞 day03

java从入门到起飞 day03

时间:2024-12-11 11:32:27浏览次数:14  
标签:java 入门 day03 System 运算符 int println out Scanner

day03

运算符和表达式

运算符: 对字面量或者变量进行操作的符号

表达式: 用运算符字面量或者变量连接起来,
符合java语法的式子就可以称为表达式。

不同运算符连接的表达式体现的是不同
类型的表达式

常见运算符

在这里插入图片描述

小细节
  1. 只有整数参与计算,结果只能得到整数,有小数部分则去掉小数!!!

  2. 小数参与计算,结果有可能是不精确的,如果我们需要精确计算,那么需要用到后面的知识点。

小练习
import java.util.Scanner;
public class Main {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int i = sc.nextInt();
        System.out.println("输入的值"+i);
        int a=i/100%10;//获得百位
        int b=i/10%10;//获得十位
        int c=i/1%10;//获得个位
        System.out.println("百位"+a+"十位"+b+"个位"+c);
    }}
控制台输出:
123
输入的值123
百位1十位2个位3

进程已结束,退出代码为 0

隐式转换与强制转换

隐式转换(类型小变大)

隐式转换的两种提升规则
  1. 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
  2. byte,short,char三种类型的数据在运算的时候,都会直接提升为int,然后进行运算

强制转换(类型大转小)

需要我们显式书写,书写格式如下

(数据类型)(a+b+c+d...)

字符串的拼接

在有字符字符串的式子中

代码从左到右依次执行" + "两边只要有字符或者字符串就会执行字符串拼接,而非计算

字符的计算

当字符参与计算时直接提升int类型,且对应的值为ascii码表中的值

A:65

a:97

在这里插入图片描述

自增自减运输符

i++和++i

  1. i++ 先用后加
int a=10;
int b=a++;//执行完后b中的值为10,a++先赋值给b,再对自身执行+1操作
//执行完上一行的代码后,此时a的值为11

  1. ++i先加后用
int a=10;
int b=++a;//执行完后b中的值为11,++a先对自身操作执行+1操作,再赋值给b
//执行完上一行的代码后,此时a的值为11

赋值运算符

在这里插入图片描述

小细节

在赋值运算符中隐藏了一个强制类型转换

a数据类型 s+= 1;
//等价于
a数据类型 s=(a数据类型)(s+1);

关系运算符

在这里插入图片描述

逻辑运算符

在这里插入图片描述

^(逻辑亦或)的民政局记忆方法

男男:false

女女:false

男女:true

短路运算符(逻辑运算符plus)

在这里插入图片描述

小细节

当左边的表达式能确定最终的结果,那么右边就不会参与运行

int b=10;
int a=10;
boolean result=++a<5&&++b<5;//++b并没有成功对自己自加1,因为&&前面的语句已经成功判断了
System.out.println(result);
System.out.println(a);
System.out.println(b);
控制台如下:
false
11
10

进程已结束,退出代码为 0

小练习

import java.util.Scanner;
public class Main {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();

        System.out.println("第一个数"+a);
        Scanner scanner1 = new Scanner(System.in);
        int i = scanner1.nextInt();

        System.out.println("第二个数"+i);
        System.out.println((a+i)%6==0);
        System.out.println(a==6||i==6);



    }}
控制台输出如下:
2
第一个数2
4
第二个数4
true
false

进程已结束,退出代码为 0

三元运算符

格式:关系表达式?表达式1:表达式2;
    //关系结果为真运行表达式1,为假则执行表达式2

三元运算符一定要被使用,直接写一行会报错

小练习

import java.util.Scanner;
public class Main {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        System.out.println("第一个数"+a);
        Scanner scanner1 = new Scanner(System.in);
        int i = scanner1.nextInt();
        System.out.println("第二个数"+i);
        System.out.println(a==i?"体重相同":"体重不同");
    }}

[!NOTE]

ctl+alt+L自动格式化代码

运算符号

运算符号具有优先级

在这里插入图片描述

但用小括号一定是优先于所有

原码反码和补码

原码

原码十进制数据二进制表现形式,最左边是符号位,0为,1为

在这里插入图片描述

源码的范围为**-127**~+127

弊端

负数计算不符实际,运算相反

负数的计算

符号位负数时,加减法是在数据的位置上相加

例如(-2)+1

在计算机中是这样加的-(符号位) 2+1(数据),即负号不变,在数据的位置上进行2+1 的操作,再把负号3拼接在一起得到结果**-3**

反码

解决负数计算不符实际

计算规则正数反码不变负数反码在原码的基础上,符号位不变。数值取反0变11变0。

当在反码的基础上进行加减法操作时,实际上是对加减的数进行取负操作

例如(-2)+1,可视作在原码进行如下操作-(符号位) 2+(-1)(数据)

1得到正确值**-3**

补码

解决**+ -0的问题**

对**+ -0**的补码统一规范为0000 0000

此时补码的范围为+127~-128

由于**- 0的补码变成了0000 0000,故会多出来一位补码1000 0000,规定为-128,且没有反码补码**

注意点

计算机的储存和计算都是以补码的形式进行的

基本数据类型转换的解释

隐式转换

在这里插入图片描述

转化为字节直接前面补充0
在这里插入图片描述

强制转换

截取前面多余的比特数
在这里插入图片描述

输出 44

在这里插入图片描述

输出 -56

其他运算符

在这里插入图片描述

此运算符都是对数字进行操作

System.out.println(200&10);//输出为8

在这里插入图片描述

<< ,>> 和 >>>

< < 2: 向移动位,位补0,

公式:*2

在这里插入图片描述

> > 2 :向右移动两位,高位补01(根据符号位来)

公式:/2

在这里插入图片描述
>>> 2 :向移动位,直接0

标签:java,入门,day03,System,运算符,int,println,out,Scanner
From: https://blog.csdn.net/beiming_yu/article/details/144298929

相关文章

  • java从入门到起飞 day04
    day04条件判断语句ifif(表达式){语句体;}if的注意事项1.大括号建议跟在第一行末尾if(表达式){语句体;}//而不建议if(表达式){//第二行语句体;}2.语句体只有一句时,大括号省略不写(还是建议写)if(表达式)语句体;3.对布尔类型变量判......
  • Java日志追踪深度解析:构建高效问题诊断系统
    在Java应用程序的开发和运维过程中,日志追踪是一项至关重要的技术。通过有效的日志追踪,开发者可以快速定位并解决问题,提高系统的稳定性和可靠性。本文将深入探讨Java日志追踪的各个方面,包括日志框架的选择、日志级别的设定、日志格式的设计、日志存储与检索,以及日志在分布式系统......
  • (免费送源码)计算机毕业设计原创定制:Java+ssm+MySQL 心理治愈平台
    摘 要随着社会的飞速发展和信息时代的到来,我们所处的社会也在发生着前所未有的变化。这主要体现在人们的生活节奏不断加快,活动范围在不断拓展,人与人的交往越来越多,处理微妙复杂的人际关系为每个人所不可避免,各种各样的竞争强度也越来越巨大,人与人之间的收入、社会地位等差......
  • 基于Java和Vue的家庭理财管理系统设计源码-Z5yUlJ5w
    基于Java和Vue的家庭理财管理系统设计源码地址该项目是一个基于Java和Vue的家庭理财管理系统设计源码,总共包含110个文件。其中,Java源文件73个,XML配置文件10个,Vue组件8个,JavaScript文件4个,Git忽略文件2个,YAML配置文件2个,JSON配置文件2个,JAR包文件1个,属性文件1个,日志文件1个。该系统......
  • 基于Java的车险承保清单设计源码-Z5yUlJ9t
    基于Java的车险承保清单设计源码地址该项目是基于Java的车险承保清单设计源码,共包含124个文件,其中包括48个XML配置文件、40个Java源文件、21个PNG图片文件、3个Git忽略文件、3个Gradle构建文件、3个JAR包文件、2个Properties属性文件、1个Markdown文档、1个PRO文件和1个Gradlew文......
  • 基于Java和JavaScript的交通违章信息批量查询系统设计源码-Z5yUlJhy
    基于Java和JavaScript的交通违章信息批量查询系统设计源码地址该项目是一个基于Java和JavaScript的交通违章信息批量查询系统设计源码,包含62个文件,涵盖24个Java源文件、12个JavaScript脚本、8个FreeMarker模板文件、4个CSS样式表、3个XML配置文件、3个GIF图片文件、2个属性文件、2......
  • 基于Vue.js和JavaScript的泉州学校易班离校App安卓版设计源码-Z5yUlJ1v
    基于Vue.js和JavaScript的泉州学校易班离校App安卓版设计源码地址该项目是泉州某学校易班离校App安卓版的Vue.js和JavaScript设计源码,包含22个文件,主要文件类型包括6个JavaScript文件、3个Vue组件、3个配置文件、1个Git忽略文件、1个许可证文件、1个Markdown文档、1个字体文件(EOT......
  • 基于Java中的SSM框架实现智能卤菜销售平台项目【项目源码+论文说明】
    摘要随着互联网技术的高速发展,人们生活的各方面都受到互联网技术的影响。现在人们可以通过互联网技术就能实现不出家门就可以通过网络进行系统管理,交易等,而且过程简单、快捷。同样的,在人们的工作生活中,也就需要互联网技术来方便人们的日常工作生活,实现工作办公的自动化处理,实......
  • 基于Java中的SSM框架实现消防物资存储系统项目【项目源码+论文说明】
    摘要网络的广泛应用给生活带来了十分的便利。所以把消防物资存储管理与现在网络相结合,利用java技术建设消防物资存储系统,实现消防物资存储的信息化。则对于进一步提高消防物资存储管理发展,丰富消防物资存储管理经验能起到不少的促进作用。消防物资存储系统能够通过互联网得到......
  • 基于Java和Vue的计算机应用技术专业综合实验项目设计源码-Z5yUlJ5r
    基于Java和Vue的计算机应用技术专业综合实验项目设计源码地址该项目是基于Java和Vue的综合实验项目设计源码,涵盖计算机应用技术专业。项目共包含65个文件,主要使用Java、Vue、TypeScript、JavaScript和HTML语言。文件类型包括24个Java源文件、6个XML配置文件、5个Vue组件文件、4个T......