Java30天拿下-----第二天(运算符,标识符,Scanner,进制转换)

news2024/11/27 10:30:37

Java30天拿下-----第二天

  • 一 运算符
    • 算术运算符
    • 赋值运算符
    • 关系运算符
    • 逻辑运算符
    • 三元运算符
    • 运算符的优先级
  • 二 标识符
    • 关键字
    • 保留字
  • 三 控制台接收键盘输入:Scanner
  • 四 进制
    • 进制的转换(==基本功==)
      • 其他进制转为十进制
      • 十进制转为其他进制
      • 二进制转为其他进制
      • 其他进制转为二进制
    • 原码,反码, 补码

在这里插入图片描述

一 运算符

运算符是一种特殊符号,用以表示数据的计算、赋值和比较等

  • 算术运算符
  • 赋值运算符
  • 关系运算符(比较运算符)
  • 逻辑运算符
  • 位运算符(需要二进制基础)
  • 三元运算符

算术运算符

在这里插入图片描述
除法举例:(易混)

public class study {
    public static void main(String[] args){
        System.out.println(5/2); //2
        System.out.println(5.0/2);//2.5
        double a = 5/2;
        System.out.println(a);//2.0
    }
}

解释:
5/2:都为整型,运行结果也为整型
5.0/2:前者为浮点型,运行结果也为浮点型
double a = 5/2:先计算5/2得2,再变为double类型,加上小数点

+= *= -+这些具有强制类型转换的功能

取模的使用:(易混)
公式:a % b = a - b / b * b

public class study {
    public static void main(String[] args){
        System.out.println(10%3);//1
        System.out.println(-10%3);//-1
        System.out.println(10%-3);//1
        System.out.println(-10%-3);//-1
    }
}

自增自减(易混)

public class study {
    public static void main(String[] args){
        int i = 8;
        int k = i++;
        System.out.println("k=" + k + "i=" + i);
    }
}

k=8
i=9

简单记忆法:++在后,先用再+;++在前,先+后用

面试题
第一题:
i=i++

public class study {
    public static void main(String[] args){
        int i = 1;
        i=i++;
        System.out.println(i);
    }
}

答案为1
解释:

  • 创建一个中间值(假设为temp)先存储 i 的值
  • 执行 i = i + 1
  • 再执行 i = temp
  • i = 1

第二题:
i=++i

public class study {
    public static void main(String[] args){
        int i = 1;
        i=++i;
        System.out.println(i);
    }
}

答案为2
解释:

  • 执行 i = i + 1
  • 创建一个中间值(假设为temp)先存储 i 的值
  • 再执行 i = temp
  • i = 2

赋值运算符

就是将某个运算的值赋给指定的变量
基本赋值运算符:

=

符合赋值运算符

+=
-=
*=
/=
%=

以+=为例,其他亦是如此

         a += b;        ----->     a = a + b;

关系运算符

关系运算符的结果都是boolean型,也就是true或者false
关系表达式经常用在if结构的条件中或循环结构的条件中
在这里插入图片描述注意:== 和 =

逻辑运算符

用于连接多个条件(多个表达式),最终的结果也是一个boolean值
在这里插入图片描述
说明逻辑运算规则:

  • 1.a&b:&叫逻辑与:规则:当a和b同时为true,则结果为true,否则为false
  • 2.a&&b:&&叫短路与:规则:当a和b同时为true,则结果为true否则为false
  • 3.ab:叫逻辑或,规则:当a和b,有一个为true,则结果为true,否则为false
  • 4.ab:叫短路或,规则:当a和b,有一个为true,则结果为true,否则为false
  • 5.!a:叫取反,或者非运算。当a为true,则结果为false当a为false是,结果为true
  • 6.a^b:叫逻辑异或,当a和b不同时,则结果为true,否则为false

注意:&& 和 & 的区别

&& 短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高

& 逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低

开发中,我们基本上使用&&短路与,效率高

注意:|| 和 | 的区别

|| 短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高

| 逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低

三元运算符

基本语法:

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

若条件表达式为true,则运算后结果为表达式1
反之则运算后结果为表达式2

举例:

public class study {
    public static void main(String[] args){
        int a = 10;
        int b = 99;
        int result = a > b ? a++ : b--;
        System.out.println(result);
    }
}

运行结果为:

99

解释:
a=10,b=99,
a>b为假,则结果为b–

小细节:

  • 表达式1和表达式2要为可以赋值给接收变量的类型(或可以自动转换)
        int a = 10;
        int b = 99;
        int c = a > b ? 1.1 : 2.2;// 报错
        System.out.println(c);

修改为:

        int a = 10;
        int b = 99;
        int c = a > b ? int(1.1) : int(2.2);
        System.out.println(c);

这里主要也是数据类型那方面的知识

  • 三元运算符可以转为if-else语句
        int res = a > b ? a++ : --b;

上下代码含义相同

        if(a > b)
        {
            res = a++;
        }
        else:
        {
            res = --b;
        }

练习:求三个数的最大值

public class study {
    public static void main(String[] args){
        int a = 10;
        int b = 99;
        int c = 100;
        int max = (a > b ? a : b) >c ?  (a > b ? a : b) : c;
        System.out.println(max);
    }
}

运算符的优先级

在这里插入图片描述
优先级顺序为:

  • (),{}等
  • 单目运算符:++
  • 算术运算符
  • 位移运算符
  • 比较运算符
  • 逻辑运算符
  • 三元运算符
  • 赋值运算符

二 标识符

概念:

  • Java对各种变量,方法和类等的命名时使用的字符序列称为标识符
  • 凡是自己起名字的地方都是标识符(int num = 90)

规则:(必须遵守)

  • 由26个英文字母大小写,0~9,_或$组成
  • 数字不可以开头(int 3b = 1;)
  • 不可以使用关键字和保留字,但能包含关键字和保留字
  • Java中严格区分大小写,长度无限制
  • 标识符能包含空格

规范:(更加专业)

  • 包名:多单词组成时所有字母都小写:aaa.bbb.ccc//比如:com.hsp.crm
  • 类名,接口名:多单词组成时,所有单词首字母大写,比如:TankShort【大驼峰】
  • 变量名,方法名:多个单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写,比如:tankShort【小驼峰,简称驼峰法】
  • 常量名:所有字母都大写。多个单词用下划线_:TAX_RATE

关键字

在这里插入图片描述
在这里插入图片描述

保留字

Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用,自己命名标识符时要避免使用这些保留字

  • byValue
  • cast
  • future
  • generic
  • inner
  • operator
  • outer
  • rest
  • var
  • goto
  • const

三 控制台接收键盘输入:Scanner

在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。
input.java,需要一个扫描器(对象),就是Scanner

步骤:

  • 导入该类的所在包,java.util.*
  • 创建该类的对象(声明变量)
  • 调用里面的功能

举例:

import java.util.Scanner;//表示把java.util下的Scanner类导入
public class study {
    public static void main(String[] args){
        Scanner myScanner = new Scanner(System.in);
        System.out.println("请输入姓名:");
        String name = myScanner.next();
        System.out.println("请输入年龄");
        int age = myScanner.nextInt();
        System.out.println("请输入薪水");
        double sal = myScanner.nextDouble();
        System.out.println("该人的信息如下:");
        System.out.println("名字:" + name + "\n" + "年龄:" 
        + age + "\n" + "薪水:" + sal);
    }
}

请输入姓名:
汴京城下君
请输入年龄
20
请输入薪水
9600
该人的信息如下:
名字:汴京城下君
年龄:20
薪水:9600.0

四 进制

进制的介绍:

  • 二进制: 0,1。满2进1,以0b或者0B开头
  • 十进制:0~9。满10进1。
  • 八进制: 0~7。满8进1,以数字0开头表示
  • 十六进制: 0~9以及A(10)到F(15)。满16进1,以0x或者0X开头表示,此处的A到F不区分大小写

在这里插入图片描述

进制的转换(基本功

其他进制转为十进制

二进制转为十进制
规则:
从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和
案例:
将0b1011转为十进制
在这里插入图片描述

八进制转为十进制
规则:
从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和

十六进制转为十进制
规则:
从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和

十进制转为其他进制

十进制转为二进制
规则:
将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制
案例:
将34转为对应二进制---->0b00100010
(一个字节占八位,只得到六位,还要用两个0填充高位)
在这里插入图片描述十进制转为八进制
规则:
将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的八进制

十进制转为十六进制
规则:
将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制

二进制转为其他进制

二进制转为八进制
规则:
从低位开始,将二进制数每三位一组,转成对应的八进制即可
案例:
将0b11010101转为八进制
在这里插入图片描述
二进制转为十六进制
规则:
从低位开始,将二进制数每四位一组,转成对应的十六进制即可

其他进制转为二进制

八进制转为二进制
规则:
将八进制数每一位,转成对应的一个3位的二进制数即可
案例:
将0237转成二进制
在这里插入图片描述

十六进制转为二进制
规则:
将十六进制数每一位,转成对应的一个4位的二进制数即可

原码,反码, 补码

  • 二进制的最高位是符号位:0表示正数,1表示负数
  • 正数的原码,反码,补码都一样(三码合一
  • 负数的反码 = 它的原码符号位不变,其他位取反(0->1,1->0)
  • 负数的补码 = 它的反码+1。负数的反码 = 负数的补码-1
  • 0的反码,补码都是0
  • java没有无符号数,换言之,java中的数都是有符号的
  • 计算机运算的时候,都是以补码的方式来运算的
  • 当我们看运算结果的时候,要看它的原码

位运算

在这里插入图片描述
在这里插入图片描述

        System.out.println(4 << 3); // 4*2*2*2 = 32
        System.out.println(15 >> 2);// 15/2/2 = 3

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《当我谈跑步时,我谈些什么》痛楚难以避免,而磨难可以选择

《当我谈跑步时&#xff0c;我谈些什么》痛楚难以避免&#xff0c;而磨难可以选择 村上春树&#xff0c;日本当代小说家&#xff0c;情感类类型作家。主要作品有《且听风吟》《挪威的森林》《海边的卡夫卡》《奇鸟行状录》《1Q84》等。 施小炜 译 来自百度百科的一条&#xff1…

存储快速入门——【2】数据复制与容灾、云存储、大数据概念

存储快速入门——【2】数据复制与容灾、云存储、大数据概念 一、数据复制与容灾 1 恢复时间目标&#xff08;RTO&#xff09;和恢复点目标&#xff08;RPO&#xff09; 对于信息系统而言&#xff0c;容灾就是使信息系统具有应对一定的灾难袭击&#xff0c;保持系统或间断运行…

2023年软件测试工程师,初级到高级进阶路线指南,测试之路...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 提到软件测试工程…

一、JavaScript函数this指向

1 this的绑定规则 2 apply/call/bind 3 this绑定优先级 4 绑定之外的情况 5 箭头函数的使用 6 this面试题分 <script>// 定义函数function foo(name) {console.log("foo函数:", this)}// 1.方式一: 直接调用 这里的this指向window// foo()// 2.方式二: 通…

Java网络编程知识

目录 1.网络编程概述 1.网络编程的目的 2.网络编程的三个问题 1.如何准确定位网络上的主机&#xff1f; 2.如何定位主机上的特定应用&#xff1f; 3.找到主机后如何可靠高效的进行数据传输&#xff1f; 2.通信要素一:IP和端口号 1.IP地址 2.端口号 3.套接字 4.通信要…

基于Yolov8的纸箱破损检测系统

目录 1.Yolov8介绍 2.纸箱破损数据集介绍 2.1数据集划分 2.2 通过voc_label.py得到适合yolov8训练需要的 2.3生成内容如下 3.训练结果分析 4. 纸张破损检测系统设计 4.1 PySide6介绍 4.2 安装PySide6 4.3 纸张破损检测系统设计 1.Yolov8介绍 Ultralytics YOLOv8是Ultral…

SpringBoot动态加载jar包中的bean

一、业务场景 在有些业务场景下&#xff0c;需要SpringBoot来动态加载jar中的class文件&#xff0c;自动往spring容器中添加新的bean&#xff1b;如物联网设备上传的信息用物模型来解析&#xff0c;用java来解析物模型&#xff0c;但用户的设备千差万别&#xff0c;解析设备的…

系统移植 搭建nfs服务器,启动盘,内核安装和加载

目录 1. nfs 服务器网络环境搭建 1.1. 查看是否安装了 nfs 服务器 1.2. 修改nfs配置文件 1.3. 创建nfs工作目录 1.4. 重启nfs服务 1.5. 开始测试是否成功 2. SD 卡启动盘 2.1. 方法1&#xff1a;从0扇区开始烧写 2.2. 方法2&#xff1a;直接部署 3. Linux 内核的安装…

SpringBoot编程---Day 01

目录 一、springboot介绍 &#xff08;一&#xff09;Spring Boot 特性 &#xff08;二&#xff09;了解自动配置原理 &#xff08;三&#xff09;springboot 入口功能详解 &#xff08;四&#xff09;自定义banner &#xff08;五&#xff09;容器功能 (六)配置文件 二…

(九)枚举器和迭代器(1)

一、枚举器和可枚举类型 复习完了数组之后&#xff0c;由于数组遍历的这个行为&#xff0c;跟枚举器有很大的相关性&#xff0c;所以接下来继续要学习与枚举器相关的内容。 1、使用 foreach 语句 int[] arr1 { 10, 11, 12, 13 };foreach (int item in arr1)//枚举元素Consol…

尚硅谷大数据Flink1.17实战教程-笔记01【Flink概述、Flink快速上手】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址&#xff1a;尚硅谷大数据Flink1.17实战教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据Flink1.17实战教程-笔记01【Flink概述、Flink快速上手】尚硅谷大数据Flink1.17实战教程-笔记02【Flink部署】尚硅谷…

【JVM 监控工具】性能诊断--JProfiler的使用

文章目录 背景一、Java 性能诊断工具简介二、简单命令行工具三、图形化综合诊断工具JVisualvmJProfiler 四、分布式应用性能诊断五、IDEA中设置JProfilerJProfiler是什么功能安装使用生成快照配置VM运行程序 背景 性能诊断是软件工程师在日常工作中需要经常面对和解决的问题&a…

公司新来的阿里p8,看了我做的APP和接口测试,甩给了我这份文档

移动应用App已经渗透到每个人的生活、娱乐、学习、工作当中&#xff0c;令人激动、兴奋且具有创造性的各种App犹如雨后春笋般交付到用户手中。各类智能终端也在快速发布&#xff0c;而开发者对于全球移动设备的质量和性能却掌握甚少&#xff0c;App与设备的兼容性问题常常导致用…

【状态估计】基于卡尔曼滤波器的传感器直流电机驱动研究(Matlab代码、Simulink实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Navicat 受邀出席 PostgreSQL 技术峰会,欢迎莅临我们的展台了解 Navicat 工具包如何提升你的工作效能

Navicat 受邀出席 PostgreSQL 技术峰会成都站&#xff0c;欢迎童鞋们莅临我们的展台。你有机会与我们的专家面对面交流&#xff0c;并了解实用的 Navicat 工具包如何帮助PostgreSQL用户&#xff08;应用开发人员、DBA、运维人员以及数据分析师&#xff09;有效地提升日常的工作…

串口控制小车(二次开发)

0.资料 项目工程文件夹 分文件原理 之前的代码 1.L9110S电机驱动模块demo 2.串口通信&#xff08;习题4&#xff1a;PC发送字符串指令给单片机&#xff09; 3.wifi模块&#xff08;串口中断代码优化&#xff09; 3.蓝牙模块 1.串口指令控制小车_分文件 1、和单片机的接…

MVC、MVP、MVVM:详解2

概述 MVC、MVP、MVVM 都是在 Android 开发中经常用到的架构思想&#xff0c;它们都是为了更好地分离代码、提高代码可复用性、方便维护等目的而设计的。下面对这三种架构思想进行简单的介绍和比较。 MVC MVC 架构是最早被使用的一种架构&#xff0c;它把程序分成了三个部分&…

CVPR 2023 首届视觉异常检测(Visual Anomaly and Novelty Detection,VAND)挑战赛 Zero-shot 赛道冠军

这篇文章主要介绍一下我们在 CVPR 2023 VAND Workshop 的挑战赛中所采用的模型和方案。在 Zero-shot 赛道中我们获得了冠军&#xff08;Winner&#xff09;&#xff0c;在 Few-shot 赛道中&#xff0c;我们获得了第四名&#xff08;Honorable Mentions&#xff09;。 题目&…

怎么安装anaconda?anaconda安装详解!

Anaconda Navigator 是 Anaconda 的图形化管理界面&#xff0c;点击它即可进入 Anaconda 的图像化管理界面。许多小伙伴可能被朋友或者小编安利过Anaconda而跃跃欲试&#xff0c;今天小编就将Anaconda安装详解分享给大家。心动的小伙伴们赶紧安装起来吧&#xff01; 下载 官方…

1分钟教你配置好你的python环境

欢迎来到我们的系列博客《Python360全景》&#xff01;在这个系列中&#xff0c;我们将带领你从Python的基础知识开始&#xff0c;一步步深入到高级话题&#xff0c;帮助你掌握这门强大而灵活的编程语法。无论你是编程新手&#xff0c;还是有一定基础的开发者&#xff0c;这个系…