Java中的数据类型、变量

本文详细介绍了Java中的基本数据类型,如数值型(整数、浮点)、字符型、布尔型,以及它们的内存占用和特殊规则。重点讲解了数据类型转换,包括自动和强制类型转换,以及变量的声明、分类和默认值。
摘要由CSDN通过智能技术生成

数据类型

1.基本数据类型

1.1数值型

整数型

byte 字节 8bit

short 短整型 16bit

int 整型 35bit

long 长整型 64bit

浮点型

float 和 double 使用的是科学计算法。

float是单精度浮点数,内存占32bit。

double是双精度浮点数,内存占64bit。

float的值必须以F/f结尾,不区分大小写。

double的值需要加D/d结尾,不区分大小写。但是D/d可以省略。

1.2字符型

char是字符型,内存占用16bit,但是范围是0~65535,没有负数。

ASCII码:是字符和数字直接的一种映射

A=65,B=66,C=67......

a=97,b=98,c=99......

0=48,1=49,2=50......

字符型需要用''单引号表示,并且单引号内有且只有一个字符。字符型还支持Unicode编码。

\:转义符,把有意义的字符转换为无意义的字符

例如:因为单引号是结束和开始字符型的标志,所以是有意义的字符,如果我们想在字符中保存单引号,那么就需要通过'\'转义符转义。

1.3布尔型

Java中的Boolean只有true和false,不能写0或1。

boolean 主要用于逻辑运算处理中或条件控制语句中。

boolean不参加任何类型的转换和运算

占用1字节,全0表示false 0000 0000,1表示true 0000 0001。

数据类型转换

8种基本类型中,除了boolean布尔型,其他7种类型,都可以进行相互转换。

低精度到高精度,可以自动类型转换。

高精度到低精度,需要强制类型转换。

注意:float和double是科学计数法储存,所以可保存的数据值更大。

自动类型转换:byte→short→int→long→float→double

                                char→int→long→float→double

强制类型转换:强制转换规则  

                                低精度类型  变量名 = (低精度类型)高精度类型数据;

强制类型转换,可能会丢失精度,导致数据不准确。

char到byte和short是强制类型转换,到int是自动类型转换。

其他类型转char类型,都需要强制类型转换。

数据类型转换-进阶

// 强制类型转换,是砍掉高位,留低位

// 0000 0000 0000 1010

short s1 = 10;

// 0000 1010

byte b1 = (byte) s1;

// 0000 0000 1000 0001

s1 = 129;

// 由于1开头,所以是负数,那么 1000 0001则为补码

// 1000 0001

// 1000 0000 反码

// 1111 1111 源码 = -127

b1 = (byte) s1;

System.out.println(b1);

// 0000 1010 = 10

// 1000 1010 = -10

// 1111 0101 = -10 反码

// 1111 0110 = -10 补码

// 11111111111111111111111011110111

int i1 = -265;

// 砍掉后 是这个

// 1111111011110111

// 但是char没有负数,所以1 不表示正负数,所以 对应的整数是 65271

char c = (char) i1;

System.out.println(c);

c = 65271;

变量

1.常量

final修饰的变量是常量,不可修改。

final int i=2;

i=3;//报错

2.字面量

也是常量的一种,不可复用,不可修改。

3.变量

在生命周期中变量的值是可修改的。

3.1变量声明

数据类型 变量名; 只创建变量,但是不赋值。

int a;

数据类型 变量名 = 值; 创建变量并赋值。

int b = 2;

 数据类型 变量名,变量名…; 同时声明多个变量。

int z, x,c

数据类型 变量名=值,变量名=值,…; 同时声明多个变量并赋值。

intg=1,w=2,e= 3;

同作用域中,变量名不能重复, 一个{} 就是一个作用域!

double p = 3;

使用变量p

System.out.println(p);

注意:不能先使用后声明

 System.out.println(o);

int o = 2;

3.2变量分类

局部变量:在方法中创建的变量,是局部变量(main{})。

静态变量:在类体中,使用static 修饰的变量,是静态变量(类名{})。

成员变量:在类体中,没有使用static的变量,是成员变量。

3.3变量调用

局部变量:只能在当前方法中使用,并且在该方法中直接通过变量名使用即可。

静态变量:类名.静态变量名访问,如果在当前类中,调用当前类的静态变量,类名也可以省略。

成员变量:对象.成员变量名访问。

3.4变量调用优先级

3.5默认值

/静态变量和成员变量都有默认值

整数 默认0,小数默认 0.0,布尔型默认 false,字符型默认 \u0000,引用类型默认 null。

局部变量没有默认值,不赋值,不能使用。

  • 44
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值