基本数制转换

2023-10-09 13:59
文章标签 转换 基本 数制

本文主要是介绍基本数制转换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基本数据类型转换

byte short int long float double char(2字节,虽然是字符,但实际是unicode编码的一个十进制整数,可以把它当做整数对待
Boolean不能和其他类型进行转换(它只有true/false)

转换规则

转换规则:不看字面量,看数据类型容量。

默认转换:byte,char,short默认转换为int,int默认转换为long ,long默认转换为float,float默认转换为double。
byte 1字节;short 2字节;int 4字节;long 8字节。
容量小转容量大:可以直接转换
double>float>long>int>byte=char=short
在这里插入图片描述
强制转换:

容量大转容量小:会出现溢出现象,精度损失现象
圆括号内为强制数制转换

float是4字节,但由于小数的二进制存储结构与整数的二进制存储不同
所以,float大于int
byte<short<char<int<long<float<double
参与运算时,小类型byte,short,char都将类转换为int类型

运算符

算术运算符

+:1.加法运算 (字符也可以参与运算) 数值加数值(char)

​ 2.字符串的连接 数值+字符串=字符串 字符串+字符串=字符串
3.表示正数。

-数值-数值(char)

*乘积数值乘数值(char)

/数值/数值(char)

%取余数:数值%数值(char)

++自加一,注意运算顺序,是++m还是m++, ++m是先加一 再运算,m++是先运算再加一

–自减一

关系运算符
>,<,>=,<=,==,!=

用于数值(char)之间进行大小比较

== !=还可以使用引用类型之间的比较

		String s1="abc";String  s2="abc";System.out.println(a==b);//falseSystem.out.println(a!=b);//true
赋值运算符

注意左右俩边的数据类型是否一致,不一致报错。

=,+=,-=,*=,/=

把右边字面量赋给左边的变量,注意赋值/时声明的数据类型相匹配

+=可以隐式的进行数据类型转换
s=s+2// s=s+2;s为short类型,3为int类型,类型不匹配,会报错
逻辑运算符

& 逻辑与(所有的表达式都返回true,结果为true,有一个false,结果都是false)

&& 逻辑与(短路与)<当第一个表达式为false,下一个表达式不执行>

| 逻辑或(所有的表达式都返回false,结果为false,有一个true,结果都是true)

|| 逻辑或(短路或)<当第一个表达式为true,下一个表达式不执行>

! 逻辑非

int a = 10;
int b = 5;
int c =8;
System.out.println(!(a>b));//true-->false

^ 逻辑异或(结果相同为false,不同为true)

System.out.println(a<b^b>c);//false
条件运算符(三元运算符/三目运算符)

(条件表达式)?表达式1:表达式2

先执行条件表达式,当条件表达式为true,运行表达式1

当条件表达式为false,运行表达式2

最终表达式1和表达式2必须返回一个结果

		int score=80;String result = (score>60)?"及格":"不及格"System.out.println(result);
/*if(true){}
else{}*/
位运算符

位运算:对数值的二进制进行运算

<< 左移,0100–>1000,左移一位,相当于乘2

.>>右移

.>>>无符号右移 无论正负都补零

& | ^如果左右俩边都是逻辑值,就是逻辑运算

如果不是,则为位运算。

&整数间二进制的与运算

	int a=3;int b=4;System.out.println(a&b);
/*0000 0011
+	0000 01000000 0000
*/

| 整数间二进制的或运算

^整数间二进制的异或运算

表达式的优先级
由高到低

分隔符,一元运算符,算数运算符;移位运算符,关系运算符,逻辑运算符,三目运算符,赋值运算符

控制台输入

流程控制语句

需求,程序应该根据输入的一些数据进行处理,语言中提供的一种方式,可以在控制台中输入,注意控制台中输入只是在前期我们向程序输入数据的一中方式,控制台输入将不再会使用。

在Java中,可以使用Scanner类从控制台读取输入数据。以下是一个简单的示例:

import java.util.Scanner;public class ConsoleInputExample {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入一个整数:");int number = scanner.nextInt();System.out.println("您输入的整数是:" + number);System.out.print("请输入一个字符串:");String text = scanner.next();System.out.println("您输入的字符串是:" + text);// 必要时,记得关闭Scanner对象scanner.close();}
}

在上面的示例中,我们首先创建了一个Scanner对象,它用于读取输入。然后通过nextInt()方法读取整数类型的输入,通过next()方法读取字符串类型的输入。最后,我们输出读取到的输入数据。

注意,Scanner类在读取输入时,遇到空格或换行符时会停止读取,默认情况下,next()方法以空格作为输入的分隔符。如果需要读取包含空格的整行输入,可以使用nextLine()方法。另外,记得在程序结束时关闭Scanner对象,以释放资源。

要注意异常情况,例如当输入与预期类型不匹配时,会抛出InputMismatchException异常。在实际使用时,建议对输入做一些错误处理,确保程序的健壮性。

流程控制

Java中的流程控制是指通过条件语句和循环语句控制程序的执行流程。以下是Java中常用的流程控制语句:

  1. 条件语句:

    • if语句:根据条件的真假来执行不同的代码块。
    • if-else语句:根据条件的真假来执行不同的代码块,条件为假时执行else代码块。
    • if-else if-else语句:根据多个条件的真假来执行不同的代码块。
    • switch语句:根据表达式的值来匹配多个情况执行相应的代码块。
  2. 循环语句:

    • for循环:在满足条件的情况下,重复执行一段代码块,可以控制循环次数。
    • while循环:在满足条件的情况下,重复执行一段代码块,只要条件为真就一直执行,可能导致死循环。
    • do-while循环:先执行一次代码块,然后判断条件是否为真,如果为真则继续执行,可能导致至少执行一次的情况。
  3. 跳转语句:

    • break语句:用于跳出当前循环或者switch语句,终止循环或者switch语句的执行。
    • continue语句:用于跳过当前循环的剩余代码,继续执行下一次循环。

流程控制语句在Java中非常重要,它们可以根据条件和循环要求来灵活控制程序的执行流程,使程序具备更强大的逻辑控制能力。同时,使用流程控制可以提高程序的效率和可读性。

条件语句-根据不同条件,执行不同语句

if

if…else

if…else if

if…else if…else if…else

switch:多分支选择语句,根据表达式的值,来执行多个操作中的一个,一般用于选择一些固定的选项:如一周有七天,一年有四季

与if语句比较类似,switch能实现的功能,if都能实现。反之不成。

表达式的值只能是byte,short,int,char,枚举,String
case语句只能使用常量表达式
case字面量的值不能重复
在case代码块中使用break语句终止流程,如果不添加,将会向下继续执行后面的case

/*
switch(表达式){case  字面量值1:case对应的代码块[break];[]内的内容可写可不写case 2:case 2对应的代码块……default:默认代码块}
*/

循环语句

循环语句-重复执行某些动作

for:已知循环次数,使用for循环

for(变量的定义,执行一次;进入循环的条件多次执行;变量的更新,多次执行){

循环体(多次执行)}

while

while(条件表达式){

​ 循环体

}

do …while

break&continue

break:终止循环,但是只能终止一层循环,break还可以在switch语句使用

continue:终止这次循环,跳过本次continue之后 的内容

case穿透

在编程中,case穿透是指当在一个switch语句中的一个case分支执行完后,没有遇到break语句而继续执行下一个case分支的情况。换句话说,当一个case中的代码块执行完后,控制流会继续执行下一个case中的代码块,而无论下一个case的条件是否满足。

这种情况通常是由于程序员忘记在case后面添加break语句所导致的。在没有break语句的情况下,控制流会继续往下执行直到遇到一个break语句或者整个switch语句结束。这意味着后面的case语句都会被执行,不论它们的条件是否满足。

下面是一个简单的示例来解释case穿透:

int num = 2;switch (num) {case 1:\num++;// 没有break语句,会执行下一个casecase 2:num=num*2;// 这里没有break语句,所以控制流会继续往下执行case 3:num=0;break; // 这里有一个break语句,结束switch语句的执行
}

上面的代码中,num的值是2。当控制流进入switch语句后,它会依次执行每个case中的代码块。在遇到case 2时,num=6,然后继续执行下一个case。在遇到case 3时,num=0,然后退出switch语句。

因此,由于缺少了break语句,case穿透导致了多个case的代码块被执行。在某些情况下,case穿透可能是有意为之的,但通常情况下,程序员需要小心避免它,以保证switch语句的预期行为。

家庭收支记账软件:

package day2;import java.util.Scanner;public class Demoo {public static void main(String[] args) {int money = 10000;String info = "";//记录支出和收入System.out.println("家庭收支记账软件");while (true){System.out.println("1.收支明细");System.out.println("2.登记收入");System.out.println("3.登记支出");System.out.println("4.退出");System.out.println("请选择1-4选项操作");Scanner scanner =new Scanner(System.in);int item = scanner.nextInt();out:switch (item){//case 1:System.out.println(info);break;case 2:System.out.println("请输入收入金额:");int shouru = scanner.nextInt();money += shouru;System.out.println("输入收入说明:");String desc = scanner.next();//info +="收入:"+desc+ shouru +"\n";//将输出拼成一个字符串break;case 3:System.out.println("请输入支出金额:");int zhichu = scanner.nextInt();money -= zhichu;System.out.println("输入支出说明:");String desc1 = scanner.next();info +="支出:"+desc1+zhichu+"\n";break;case 4:break out;default:System.out.println("输入选项有误");}}}
}
循环嵌套(将一个循环放到另一个循环体内)

for,while,do…while均可以作为外层循环和内层循环

for (int i=1;i<=9;i++){for(int j=1;j<=i;j++){int k=i*j;System.out.print( j+"*"+i+"="+k+" ");}System.out.println();}

这篇关于基本数制转换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/173329

相关文章

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

MyBatis-Flex BaseMapper的接口基本用法小结

《MyBatis-FlexBaseMapper的接口基本用法小结》本文主要介绍了MyBatis-FlexBaseMapper的接口基本用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具... 目录MyBATis-Flex简单介绍特性基础方法INSERT① insert② insertSelec

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

Python实现视频转换为音频的方法详解

《Python实现视频转换为音频的方法详解》这篇文章主要为大家详细Python如何将视频转换为音频并将音频文件保存到特定文件夹下,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5. 注意事项

使用Python实现图片和base64转换工具

《使用Python实现图片和base64转换工具》这篇文章主要为大家详细介绍了如何使用Python中的base64模块编写一个工具,可以实现图片和Base64编码之间的转换,感兴趣的小伙伴可以了解下... 简介使用python的base64模块来实现图片和Base64编码之间的转换。可以将图片转换为Bas

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

使用Python进行文件读写操作的基本方法

《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g