java byte 十六进制_自学JAVA每日记录(37)-欢迎指点欢迎共勉

本文介绍了Windows系统DOS命令行查找逻辑,阐述Java标识符规范、关键字、字面值等概念。详细讲解数据类型,包括数字类型符号位、正负数表示,以及不同进制表示。还说明了字符编码、转义字符,重点介绍Java整数型字面值处理、类型转换及强制转换原理和精度损失问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

18602f5c72db906d850c504a2e5d62ee.png

一、windowns操作系统DOS命令行查找命令的逻辑

优先从当前目录下查找,没有则从环境变量指定路径中查找;都没有则报错

标识符(数字,英文,下划线,美元符号;不能以数字开头)

类名,方法名,变量名,接口名,常量名

规范:

最好见名知意;遵守驼峰式命名方法;

类名,接口名:首字母大写,后面每个单词首字母大写;

变量名,方法名:首字母小写,后面每个单词首字母大写;

常量名:全部大写

关键字

字面值:就是数据,如赋予变量的值

public class 与class的区别

一个.java文件中,只能有一个public class 公共类,且类名必须与.java文件名一致;但是可以同时拥有多个不带任何修饰符的class类;

变量

在同一个作用域中,不能定义相同的变量,但是变量可以被修改赋值

变量的作用域,其实描述的就是变量的有效范围。

在什么范围之内是可以被访问的,只要出了这个范围该变量就无法访问了

变量的作用域只要记住一句话:出了大括号就不认识了

数据类型:

数字类型的第一个为符号位,0表示正数,1表示负数;正数是用原码来表示,

负数是用补码来表示;补码=反码+1;

byte类型最大值:127【二进制表示:01111111】;?byte类型最小值:-128【二进制表示:1000 0001】

十进制负数二进制转换原理:先将负数的绝对值的转换成二进制原码,将原码转换成反码(0换成1,1换成0),在将反码+1即是负数的二进制;

计算机最初只支持英文,最先出现的字符编码是:ASCⅡ码

A=65【01100001】

a=97【01100001】

0=48【】

A------(按照ASCⅡ码解码)----->01100001

01100001-----(按照ASCⅡ码编码)----->A

编码和解码的时候采用同一套字典/对照表,不会出现乱码

当解码和编码的时候采用的不是同一套对照表,会出现乱码问题。

转义字符

n 换行符

t 制表符

' 普通单引号

" 普通双引号

普通反斜杠

u 后面+unicode编码就是unicode编码对应的数;如unicode编码4e2d对应的是'中';char a='u4e2d',System.out.println(a);输出的结果是'中';其中4e2d是十六进制

十进制:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14

二进制:0,1,10,11,100,101,110

十六进制:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,10,11,12,13,14,15,16,17,18,19,1a,1b,1c,1d,1f,20

八进制:0,1,2,3,4,5,6,7,10,11,12,13,14,15,16,17,20

'中'对应的unicode编码是:4e2d

数据类型 占用空间大小 默认值 取值范围

byte 1 0 -128~127

short 2 0 -32768~32767

int 4 0 -2147483648~2147483647

long 8 0L -2的63方~2的63方-1

foat 4 0.0f 有效位数6-7位

double 8 0.0d 有效位数15位

char 2 'u0000' 0~65535

boolean 1 true/false false(0代表false,1代表true)

java语言当中的“整数型字面值”被默认当做int类型来处理。要让这个“整数型字面值”被当做long类型来处理的话,需要在“整数型字面值”后面添加l/L,建议使用大写L(因为小写l容易当成1)

java语言当中的整数型字面值有三种表示方式

第一种方式:十进制【是一种缺省默认的方式】---常用

第二种方式:八进制【在编写八进制整数型字面值的时候需要以0开始】

第三种方式:十六进制【在编写十六进制整数型字面值的时候需要以0x开始】

如:

int c =10;//常用

int d=010;

int e=0x10;

System.out.println(c);//输出10

System.out.println(d);//输出8

System.out.println(e);//输出16

java语言当中的“整数型字面值”被默认当做int类型来处理

int i=123;

//123这个整数型字面值是int类型;

//i变量声明的时候也是int类型

//int类型的123赋值给int类型的变量i,不存在类型转换;

long x=456;

//456这个整数型字面值是int类型,占用4个字节;

//x变量声明的时候是long类型,占用8个字节;

//int类型的456赋值给long类型的变量x,存在类型转换;

//int类型转换成long类型;

//int类型是小容量,long类型是大容量;

//小容量可以自动转换成大容量,称为自动类型转换机制。

long y=2147483648;

//编译错误:过大的整数:2147483648

//2147483648被当做int类型4个字节处理,但是这个字面值超出int类型范围;

long y=2147483648L;

//解决错误可正常运行

//2147483648L是8个字节的long类型,y是long类型变量,即不存在类型转换

类型转换

long x=100L;

int y=x;

x变量是long类型,8个字节;y变量是int类型,4个字节;导致编译报错,大容量不能直接赋值给小容量;

大容量转换成小容量,需要进行强制转换

强制类型转换需要加“强制类型转换符”

加上强制类型转换符之后编译通过,但是运行阶段可能损失精度

所以强制类型转换谨慎使用,因为损失精度后可能损失很严重

long x=100L;int y=(int) x;

强转原理:

x原始数据:00000000 00000000 00000000 00000000 00000000 00000000 00000000 01100100 //补码

强转之后的数据:00000000 00000000 00000000 01100100 //补码

将左边的4个字节的二进制砍掉(所有的数据强转都是这样完成的)

long k=2147483648L;

int e=(int) k;

k原始数据:00000000 00000000 00000000 00000000 00000000 10000000 00000000 00000000 00000000 //补码

强转之后的数据:10000000 00000000 00000000 00000000 //补码

计算机存储数据都是采用补码的形式存储,

所以e的值为:-2147483648

-4的原码是:10000000 00000000 00000000 00000100;反码是:11111111 11111111 11111111 11111011;补码是:11111111 11111111 11111111 11111100;

4的原码是:00000000 00000000 00000000 00000100;反码=补码=原码

负数的补码=反码+1,负数的反码在原码的基础上,符号位不变,其余的按位取反;1

正数的补码,反码原码本身

反码=

原码=1000000

byte b=50;

50是int类型的字面值,b是byte类型的字面值;

大容量转换成小容量,需要添加强制转换符的

但是,在实际编译的时候,在java语法当中,当一个整数型字面值没有超出byte类型取值范围的话,该字面值可以直接赋值byte类型变量

byte b =50;可以

byte c=127;可以

byte d=128;不可以,编译报错,128这个int类型字面值超出byte类型的取值范围,不能直接赋值给byte类型的变量,需要强制转换才行(损失精度)

纠正:byte d=(byte) 128;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值