java基础回顾--基本数据类型


Java是一种强类型语言,这就意味着必须为每一个变量声明一个类型。java中数据类型分两种,基本数据类型和引用数据类型

在这里插入图片描述

1. 基本数据类型

1.1 java的八种基本类型

包括4种整形(byte,short,int,long),两种浮点型(float,double)
一种字符型(char),一种布尔型(boolean)
Java中没有无符号类型。

1.1.1 整形

四个基本整形都是有符号整数,1字节有八位,每种类型其中第一位是符号位(注:符号位0代表正,1代表负)

类型Value取值范围
byte1字节-128 ~ 127
short2字节-32768 ~ 32767
int4字节-231 ~ 231-1 (约21亿)
long8字节-263 ~ 263-1

通常情况下,int类型最常用,byte和short主要用于特定的应用场合。

  1. byte byte byte_type;
  2. short short short_type;
  3. int int int_type;
  4. long long long_type;
    long L1=555;//不加L后缀不出错,是long 类型 long L2=55555555555;//不加L后缀出错,已经超过int表示的范围。
long L1 = 555;//不加L后缀不出错,自动转换类型,L1是long类型
long L2 = 55555555555;//不加L后缀出错,已经超过int表示的范围。

注:长整形需要在定义时加上“L”或者“l”后缀,建议大写,小写容易与数字“1”混淆

1.1.2 浮点型

浮点型用于表示常见的小数。

类型Value取值范围
float4字节-3.404E38 ~ 3.403E38
double68字节-1.798E308 ~ 1.798E308

浮点型计算存在舍入误差。很多数字不能精确表示,如果需要进行不产生舍入误差的精准数字计算(例如银行系统),需要使用BigDecmal类。

  1. float float f = -0.1f;
  2. double double d = 1.0/10;

尽量避免在比较中使用浮点数。

float f = -0.1f;
double d = 1.0/10;
double d1 = 1/10;   //d1!=d d1=0.0,d=0.1
double d2 = 17732582089;//会报错,java中手动输入的整形都是int类型,这个数字超过范围,需要加".0"或者加D,d后缀,.0代表是浮点数,浮点数默认是double型
System.out.print(f==d);    //输出false

1.1.3 字符型

  1. char(2字节) char 类型用来表示在Unicode编码表中的字符。用单引号来表示字符常量。char ch = 'a'; char ch1 = '五'; char ch = ''//编译出错,引号内必须有字符
    char 用于表示单个字符。通常表示字符常量。例如:'A’是编码为65所对应的字符常量。

Unicode编码被设计用处理各种语言的所有文字,它占2个字节,可允许有65536个字符;其中8位的ASCII码包含在Unicode中,是从0~127的。
char 是在0 ~ 65535之间取值,运算时直接当做整数进行运算。可以把0 ~ 65535之间的整数直接转型为char。

‘A’ 是一种字符,它与 “A” 是不同的,“A” 表示含有一个字符的字符串。

java中可以使用’'来将其后的字符转变为其他的含义。char c2 = ‘\n’; //表示换行符

特殊字符的转义序列符:

转义符型含义Unicode值
\b退格\u0008
\t制表符\u0009
\n换行\u000a
\r回车\u000d
\"双引号\u0022
\’单引号\u0027
\\反斜杠\u005c

1.1.4 布尔型

  1. boolean
  • 布尔型值只能是true和false,boolean型的位深度,与虚拟机有关。
  • 不可以使用0或非 0 的整数替代false和true,这点和C语言不同。
  • Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达所操作的boolean值,在编译之后都使用java虚拟机中的int数据类型来代替:true用1表示,false用0表示。———《java虚拟机规范 8版》

1.2 整形数据的三种表示方式 ---- 十进制、八进制、十六进制

1.2.1 十进制

十进制不用多介绍,就是我们常用的表示方式。

byte b = 200;//注意这么表示是错误的,超过了byte的最大范围
int length = 128;
byte b_length = -12;

1.2.2 八进制

八进制整数只允许使用阿拉伯数字0~7,同时在定义时要在该数的前面放置一个0,

int six = 06;
long nine = 011L;

1.2.3 十六进制

十六进制数由16个不同的符号组成。在定义时要在该数的前面放置一个0x。
0 1 2 3 4 5 6 7 8 9 a b c d e f ,其中a ~ f 分别代表10 ~ 15。注意A~F代表同样的含义。(这是java中少数几个不区分大小写的地方)

 int one = -0x0001; //-1
 int four = 0x0004; //4
 int eleven = 0x000b; //11
 
 //0x与0X都表示十六进制
 long seventeen_1 = 0x11L; //17
 long seventeen_2 = 0X11L; //17

1.2.4 整形数据的进制转换(java自带的方法实现)

byte b_length = 12;

//byte类型十进制数12 转换为2进制表示
System.out.println(Integer.toBinaryString(b_length)); 

 //byte类型十进制数12 转换为8进制表示
System.out.println(Integer.toOctalString(b_length)); 

//byte类型十进制数12 转换为16进制表示
System.out.println(Integer.toHexString(b_length));  
  

1.3 浮点型数据常用的 两种表现形式 ---- 十进制、科学计数法

1.3.1 十进制

普通的写法,例如:3.14 314.0 0.314

1.3.2 科学计算法表示

例如:314e2 314E2 314E-2 aex=a*10x

double b = 314e2;   //31400.0
double b2 = 314e-2;   //3.14

1.4 打印数据类型

	public static void main(String[] args) {
		int a=12;
		//调用方法进行打印
		System.out.println(getType(a));
	}
	//打印类型方法
	public static String getType(Object test) {
		return test.getClass().getName().toString();				
	}

2. 数据类型转换

2.1 自动类型转换(隐式转换)

java中自动类型提升的顺序为:

  • byte、short、char --> int --> long --> float --> double( float范围大于long )

容量小的类型可以自动转换为容量大的类型。(低字节转换成高字节,不会损失精度)
java语言的整形常量默认是int浮点型常量默认是double

byte i = 120;
//实际上在java中120首先是int类型的,然后再自动转换成byte型(char、short型同理),如果在范围之内,int如果范围-128~127,可以自动转换成byte,int范围0 ~ 65535,也可以自动转char。
//如果大于byte类型变量的最大值,则会报错,所以long类型需要加后缀,强制类型进行转换。
//float类型与double是一样的道理,java中浮点型默认是double型,所以定义float变量需要加后缀告诉编译器这里是float。

byte b = (byte)-2;  //强制转换
byte bb = (byte)-129;  //强制转换出错

2.2 强制类型转换(显示转换)

高字节数转换成低字节数,会损失精度;“大”数转换成“小“数,要强制转换。

long l = 100L;
float f = 123f;
float f1 = l;  //long型转换成float是自动转换
long l1 = (long)f;  //float转换成long要强制转换

int i = 97;
char ch = (char)i;  //ch结果为'a'
int ii = i+ch;  //ii为194,char类型运算时直接当做整数进行运算。
//做二元运算的时候,会有类型提升问题,char与int运算,结果是int型,int与long运算,结果是long型。

3. 变量的分类

  • 在方法体外,类体内声明的变量称为成员变量
  • 在方法体内部声明的变量称为局部变量
    在这里插入图片描述
  • 二者在初始化方面的异同:
    同:都有生命周期
    异:局部变量除形参外,需显式初始化
  • 补充:分配空间给变量,赋予初值即为初始化。显式初始化即为手工给予初值,否则为隐式初始化,将内容设置为默认值。int i = 25; //显示初始化i为25
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值