java输出混合数据变量_JAVA基础2——进制运算&数据类型&变量

JAVA基础2——进制运算&数据类型&变量

常量

进制转换

原反补码

变量

数据类型

数据类型转换

字符和字符串运算规则

常量

常量:在程序执行的过程中其值不可以发生改变

Java中常量的分类

字面值常量

自定义常量(面向对象部分讲)

字符串常量——用双引号括起来的内容

整数常量——所有整数

小数常量——所有小数

字符常量——用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号

布尔常量较为特殊——只有true和false

空常量null(数组部分讲解)

public class Dome1_Constant { //constant 常量

public static void main(String[] args){

System.out.println("abc123;;;"); //字符串常量

System.out.println(564566); //整数常量

System.out.println(456.456456); //小数常量

System.out.println('abc123;;;'); //''中必须放的是单个字符,10代表的是1字符和0字符

System.out.println(''); //中什么也不放,也是不可以的,因为代表不了任何字符

System.out.println(' '); //带表空格字符

System.out.println(true); //boolean类只有两个值,true和fals

System.out.println(false);

}

}

下面是错误提示:

c7aa6839ac35efa2736c6256e0a9e31a.png

进制转换

二进制

由0,1组成。以0b(b可以大写也可以小写)开头(JDK1.7版本可以表示二进制了)

八进制

由0…7组成。以0开头

十进制

由0…9组成。整数默认是十进制的

十六进制

由0…9,a,b,c,d,e,f(大小写均可)。以0x开头

任意进制到十进制的转换原理

系数:就是每一位上的数据。

基数:x进制,基数就是x。

权:在右边,从0开始编号,对应位上的编号即为该位的权。

结果:把系数×基数的权次幂相加即可。

十进制到其他进制转换

规律:除基取余,直到商为0,最后,余数反转就是结果。

8421快速转换法

1

1

1

1

1

1

1

1

1*27

1*26

1*25

1*24

1*23

1*22

1*21

1*20

128

64

32

16

8

4

2

1

十进制到其他进制时先转为二进制,然后二进制再转换为其他进制

104=64+32+8=01101000

二进制到八进制:

从右往左,每三位一组合,左边不够用0补。

把组合后的每一位换算成十进制数据。

最后,从左往右,把结果进行组合即可。

01101000=001 101 000=150

二进制到十六进制:

从右往左,每四位一组合,左边不够用0补。

把组合后的每一位换算成十进制数据。

最后,从左往右,把结果进行组合即可。

对应位上的数据,应该是十六进制的。

01101000=0110 1000=68

原反补码

原码:是二进制数的有符号表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

举例

符号位

数值位

+7

0

000 0111

-7

1

000 0111

在计算机中,数值一律用补码来表示(存储)。

主要原因:

使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。

另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。

正数:原反补码相同

负数:

反码符号位不变,数值位按位取反,0变1,1变0。

举例

符号位

数值位

+7

0

000 0111

-7

1

111 1000

补码 =反码加1

举例

符号位

数值位

+7

0

000 0111

-7

1

111 1001

变量

声明变量的格式:

数据类型 变量名 = 初始化值;

byte b = 10;

System.out.println(b);

数据类型 变量名;

变量名 = 初始化值;

使用变量

byte b;

b = 20;

System.out.println(b);

数据类型

分类

基本数据类型

引用类型(类,接口,数组)

基本数据类型

4类8种,区别在于他们在内存中的存储空间大小不一样。

类别

种类

名称

占位

范围

说明

整数

字节

byte

占1个字节

-128~127

短整型

short

占2个字节

-215~215-1

整型

int

占4个字节

-231~231-1

长整型

long

占8个字节

-263~263-1

其后跟L或者l标示

浮点数

单精度

float

占4个字节

-3.403E38~3.403E38

其后跟F或者f标示

双精度

double

占8个字节

-1.798E308~1.798E308

字符

char

占2个字节

0~65535

布尔

boolean

占1个字节

理论上是占1/8个字节,但java中没指定其大小

true\false

注意:整型默认是int;浮点型默认是double。

public class Dome1_DataType {

public static void main(String[] args){

//整数

byte b=127;

int i=43524;

long l=5345768342L;//后面最好标注大写L

short s=5635;

System.out.println(b);

System.out.println(i);

System.out.println(l);

System.out.println(s);

//浮点数

float f=3242.234234234F;//后面最好标注F or f

double d=234234.2352342342342357658;

System.out.println(f);

System.out.println(d);

//字符

char c='a';

System.out.println(c);

//布尔

boolean b1=true;

boolean b2=false;

System.out.println(b1);

System.out.println(b2);

}

}

作用域问题 : 同一个区域不能使用相同的变量名

初始化值问题 : 局部变量在使用之前必须赋值

一条语句可以定义几个变量

数据类型转换

数据参与运算

参与运算的数据类型要一致。

转换规则

布尔型不能参与运算

整形,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:

容量小的类型默认转换为容量大的数据类型;

数据类型按容量大小排序为:

byte,short,char-byte,short,char之间不会互相转换,他们三者在计算时首先会转换为int类型

容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意

有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算

public class Dome_DataTypeConversion { //conversion 转换

public static void main(String[] args){

//隐式转换

int a=8;

byte b=10;

a=a+b;

System.out.println(a);

//强制转换

int x=9;

byte y=7;

y= (byte) (x+y);

System.out.println(y);

byte b1= (byte) (120+79);

byte b2=(byte)300;

System.out.println(b1);

System.out.println(b2);

}

}

错误代码示范

public class Dome1_DataTypeConverson1 {

public static void main(String[] args){

byte x1=3;

byte x2=6;

byte x3=x1+x2;

/* 1,byte与byte(或short,char)进行运算的时候会提升为int,两个int类型相加的结果也是int类型

2,x1和x2是两个变量,变量存储的值是变化,在编译的时候无法判断里面具体的值,相加有可能会超出byte的取值*/

byte x4=3+6;

System.out.println(x3);

System.out.println(x4);//x4可以正常输出的原因是java有常量优化机制

}

}

错误提示:5351453f7a932fccb07b8c5ba265098a.png

注意:

变量无法直接运算,而常量可以

因为java有常量优化机制

float为什么比long大?

long有8个字节而float有4个字节

IEEE754规定

4个字节是32个二进制位 1位是符号位 8位是指数位 23位是尾数位

00000000——11111111

0到255 其中0代表0 255代表无穷大

1到254每个指数位减去127

-126到127

long:2 63 − 1 2^{63}-1263−1

float:3.4 × 1 0 38 > 2 × 1 0 38 > 2 × 8 38 = 2 × 2 3 38 = 2 × 2 114 > 2 63 − 1 3.4×10^{38}>2×10^{38}>2×8^{38}=2×{2^3}^{38}=2×2^{114}>2^{63}-13.4×1038>2×1038>2×838=2×2338=2×2114>263−1

它们底层的存储结构不同。

float表示的数据范围比long的范围要大

字符和字符串运算规则

public class Dome_DataTypeConversion2 {

public static void main(String[] args){

System.out.println('a'+1); //98,因为有ASCII码表,a字符对应的是int类型的97

System.out.println((char)('a'+1));

System.out.println("he11o"+'a'+1); //任何数据类型用+与字符串相连接都会产生新的字符串

System.out.println('a'+1+"hello");

System.out.println("5 + 5 = " + ( 5 + 5 ));

}

}

运行结果如下

0d1b661660372454c635d97d00fc6922.png

Java语言中的字符char可以存储一个中文汉字吗?

可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。中文也是占的两个字节。所以,Java中的字符可以存储一个中文汉字

//char类型是否可以存储中文

char c='中';

System.out.println(c);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值