java基础:基本类型

java基本类型(八大基础类型)

八大基本类型如下
byte
boolean
char
int
short
long
float
double

下面具体介绍各个类型:

1、booelan(布尔类型)

布尔类型占1个字节(8位),它的的值必须是true或者false,在JVM中会转换为1(true)或者0(false)。

2、char(字符类型)

char(字符类型)
char类型占2个字节(16位),用来表示字符,是基本数据类型
String表示字符串,是类类型。一个String是由0~n个char组成。

额外:关于字符编码

(1)Java语言对文本字符采用Unicode编码。由于计算机内存只能存取二进制数据,因此必须为各个字符进行编码。
(2)常见编码:
1、ASCII
它是现今最通用的单字节编码系统,它主用于表达现代英语和其他西欧语言中的字符,只用一个字节的7位,一共表示128个字符。

2、ISO-8859-1
又称为Latin-1, 是国际标准化组织(ISO)为西欧语言中的字符制定的编码,用一个字节(8位)来为字符编码,与ASCII字符编码兼容。所谓兼容,是指对于相同的字符,它的ASCII字符编码和ISO-8859-1字符编码相同。

3、GB2312
包括对简体中文字符的编码,一共收录了7445个字符(6763个汉字+682个其他字符). 它与ASCII字符编码兼容。

4、GBK
对GB2312字符编码的扩展,收录了21886个字符(21003个字符+其它字符), 它与GB2312字符编码兼容。

5、Unicode
收录了全世界所有语言文字中的字符,是一种跨平台的字符编码,Unicode具有两种编码方案:
用2个字节(16位)编码,被称为UCS-2, Java语言采用;
用4个字节(32位)编码,被称为UCS-4;

6、UTF
有些操作系统不完全支持16位或32位的Unicode编码,UTF(UCS Transformation Format)字符编码能够把Unicode编码转换为操作系统支持的编码,常见的UTF字符编码包括UTF-8、UTF-16、UTF-32


关于UTF-8,使用一至四个字节为每个字符编码,其中大部分汉字采用三个字节编码少量不常用汉字采用四个字节编码。因为 UTF-8 是可变长度的编码方式,相对于 Unicode 编码可以减少存储占用的空间所以被广泛使用

关于char类型的值
字符’a’,的表示形式:
二进制数据形式为 :0000 0000 0110 0001
十六进制数据形式为 :0x0061
十进制数据形式为 :97

//使用具体字符来表示a
char c = 'a';
//使用Unicode编码来表示字符a
char c = '\u0061';
//0x开头的数字为十六进制,,使用十六进制表示a
char c = 0x0061;
//使用十进制来表示a
char c = 97;
//0开头的数字为八进制,使用八进制表示a
char c = 0141;
//一个中文汉字就是一个字符
char a = '中';

3、整型

都是用来存整数的。

分类:

类型在内存中占的位数或字节数范围
Byte8位,一个字节-2 ^7~2 ^7-1
short16位,2个字节-2 ^15~2 ^15-1
int32位,4个字节-2 ^31~2 ^31-1
long64位,8个字节-2 ^63~2 ^63-1

在Java语言中,为了区分不同进制的数据,八进制数以“0”开头,十六制以“0x”开头,二进制以“0b”开头

byte b1 = 97; //十进制
byte b2 = 0141;// 八进制
byte b3 = 0x61; //十六进制
byte b4 = 0b01100001; //二进制

//都是97打印出来
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
System.out.println(b4);

1、Byte(字节类型)

(1)计算机中,数据传输大多是以“位”(bit,比特)为单位一位就代表一个0或1(二进制),每8个位(bit)组成一个字节(Byte),所以,1个字节=8位0101代码,例如 0000 0001。
例如,0000 0001 ,表示二进制的数字1,它是1个字节,共8位0101代码组成。

(2)十六进制有0 1 2 3 4 5 6 7 8 9 A B C D E F ,它的范围是0~ 15 ,每4位0101代码可以表示一个十六进制的数字,因为4位表示的最小值是 0000,最大值1111 ,刚好范围是0~15 .

总结:1字节=8位

2、Byte\long\int\short的使用

整数类型的默认类型是int,对于给出一个字面值是99的数据,在没有指明这个数据是什么具体的类型的情况下,那么java默认认为是int类型。

代码一:

byte a = 1;

//编译报错
//a+1中a是byte类型,字面值1没有声明类型,那么默认是int
//byte是8位,int是32位,那么结果是32位的数字
//b只是一个byte类型的变量,那么只能接收8位的数字
//修改为int b = a+1;就可以编译通过
byte b = a+1;

//编译通过
//虽然1+1中的1都是默认的int类型
//但是这个俩个1都是固定的字面值
//编译器可以判断出其结果是否超出了byte表示的范围
//上面例子中a+1不能判断出结果的原因是:a是变量,是有可能发生变化的
byte c = 1+1;


//编译报错
//编译器判断出其结果超出了byte的表示范围(-128~127)
byte d = 1+127;

//编译报错 
/*原因:32位的数据赋值给byte类型的变量,因为使用的1这些都是字面值,默认是int,注意关键点在在最左边的1,编译器不认为是符号位,所以它默认是在前面补了24个0*/
byte e = 0b11111111;

//编译通过
//输出结果为255
//因为1的前面补了24个0
int e = 0b11111111;

//编译通过
//输出结果为-1
//因为这里做了类型强制转换
byte f = (byte)0b11111111;

代码二:

 {
byte a=56;                  //编译通过
byte b=156;                 //编译失败,超出了byte的取值范围 
int c=9999999999;           //编译失败,超出了int的取值范围(10个9)
long d=999999999;           //编译通过,常量在int范围内(9个9),int类型可以自动转成long类型
long e=9999999999;          //编译失败,常量超出int范围,不可以自动转成long类型
long f=9999999999L;         //编译通过,在long类型的范围内(注意数值后面加了个L,表示这是long类型)
Long g=999999999;           //Long不是基本数据类型,不能和int直接转化
}

4、浮点型

表示小数的类型
分类为float和double类型,float的精度为7位有效数字,double的精度为16位有效数字(浮点类型的默认类型是double类型)

声明

//后面加f或者F(必加)
float f = 10.5f;
//后面加d或者D或者不加
double d = 10.5d;

代码:

//编译通过
//字面值1.5默认类型是double
double d = 1.5;
double d = 1.5D;

//编译报错
//字面值1.5默认类型是double
//double和float的精确度不一样
float f = 1.5;

//f2编译通过,因为字面值1的类型是int,可以自动转变为float类型
//f3编译报错,因为字面值1.5的类型是double,float不能转换为double类型。
float f1 = 10.5f;
float f2 = f1+1;
float f3 = f1+1.5;

浮点型的数据精度丢失
例如:

System.out.println(1.0-0.66);  //输出结果: 0.33999999999999997

Java中的浮点数类型float和double不能够进行精确运算,虽然大多数情况下是运行是正常的,但是偶尔会出现如上所示的问题。浮点数实际上只是个近似值,所以从二进制转化为十进制浮点数时,精度容易丢失,导致精度下降。

解决?可以使用BigDecimal类

//add方法 +
//subtract方法 -
//multiply方法 *
//divide方法 
BigDecimal d1 = BigDecimal.valueOf(1.0);
BigDecimal d2 = BigDecimal.valueOf(0.66);
double result = d1.subtract(d2).doubleValue();
System.out.println(result);   
//输出结果:0.34
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我很乐意回答您关于Java基础类型和继承的问题。 在Java中,有8个基本数据类型:byte,short,int,long,float,double,char和boolean。这些基本类型Java语言中最基础类型,它们可以用于声明变量和参数,以及作为返回值类型。 除了基本数据类型之外,Java还有一些常用的引用类型,比如字符串(String)、数组(Array)、日期(Date)等。这些引用类型是通过类来实现的,因此被称为类类型Java中的类类型是通过继承机制来构建的。一个类可以继承另一个类的属性和方法,从而实现代码的重用和扩展。Java的类继承是单继承,也就是说每个类只能直接继承一个父类。但是,一个类可以间接继承多个类,即一个类可以继承另一个类,而这个类又可以继承另一个类,以此类推。 Java中的继承关系可以用extends关键字来表示。例如,如果一个类A要继承另一个类B,可以使用以下代码: ``` class A extends B { // Class A code goes here } ``` 在这个例子中,类A继承了类B的所有属性和方法,并且可以添加自己的属性和方法。 继承的一个重要概念是覆盖(overriding)。如果子类需要改变父类中的方法实现,可以在子类中重新定义该方法,并且使用@Override注释来指示这是一个覆盖方法。例如: ``` class A extends B { @Override public void someMethod() { // Override implementation goes here } } ``` 在这个例子中,类A重新定义了类B中的someMethod()方法,并且使用@Override注释来指示这是一个覆盖方法。 希望这些信息能对您有所帮助。如果您有任何其他问题,请随时问我。 ### 回答2: Java基础类型包装类是指将基本数据类型封装成类的类型,它们与基本数据类型对应,可以让基本数据类型拥有面向对象的特性。Java基础类型包装类一共有八个,分别是Byte、Short、Integer、Long、Float、Double、Character和Boolean。 在Java中,基本类型基本类型包装类型之间可以进行自动装箱和自动拆箱操作。自动装箱是指将基本数据类型转换为对应的包装类对象,自动拆箱则是指将包装类对象转换为对应的基本数据类型。 使用Java基础类型包装类可以提高Java程序设计的灵活度和可扩展性。比如,可以使用包装类来表示空值,而基本数据类型不能表示空值。此外,基础类型包装类可以作为参数传递给方法,可以通过反射操作这些类型,还可以实现对象的比较。 Java基础类型包装类还提供了各种方法来处理或转换数据。比如,可以使用Integer类的parseInt方法将字符串转换为整数;可以使用Double类的toString方法将浮点数转换为字符串;可以使用Character类的isLetter方法判断一个字符是否为字母等。 需要注意的是,在使用基础类型包装类的时候,应该尽量避免创建不必要的对象,因为基础类型包装类是对象,创建对象会导致额外的开销和内存消耗。 综上所述,掌握Java基础类型包装类的使用是Java程序员必不可少的基础技能。熟练掌握它们的特点和使用方法,将大大提高程序开发的效率和质量。 ### 回答3: Java基础类型包装类是为了将基本数据类型封装成对象类型而出现的。基本数据类型包括byte、short、int、long、float、double、boolean和char,而基本数据类型包装类分别是Byte、Short、Integer、Long、Float、Double、Boolean和Character。在使用Java的过程中,我们经常需要将基本数据类型转换成对象类型,或者将对象类型转换成基本数据类型。这时,就需要使用到基本数据类型包装类。 在第2关:Java基础类型包装类-练习中,我们需要掌握以下几个方面的技能: 1. 创建包装类对象 可以使用new关键字加上对应的包装类名称来创建对应的包装类对象,例如: Integer i = new Integer(10); 2. 将字符串转换成基本数据类型或包装类对象 可以使用对应的valueOf方法将字符串类型转换成对应的基本数据类型或包装类对象,例如: int num = Integer.valueOf("10"); Integer i = Integer.valueOf("10"); 3. 自动装箱和拆箱 Java提供了自动装箱和拆箱的特性,可以简化代码编写。自动装箱是将基本数据类型自动转换成对应的包装类对象,自动拆箱是将包装类对象自动转换成对应的基本数据类型。例如: Integer i = 10; // 自动装箱 int num = i; // 自动拆箱 4. 基本数据类型和包装类对象之间的比较 基本数据类型和包装类对象之间可以通过equals方法进行比较,也可以使用“==”运算符进行比较,例如: Integer i1 = new Integer(10); Integer i2 = new Integer(10); System.out.println(i1.equals(i2)); // true System.out.println(i1 == i2); // false int num1 = 10; int num2 = 10; System.out.println(num1 == num2); // true 5. 基本数据类型和包装类对象的转换 可以通过对应的intValue、doubleValue等方法将包装类对象转换成对应的基本数据类型,例如: Integer i = new Integer(10); int num = i.intValue(); 总的来说,掌握Java基础类型包装类的使用可以让我们更加方便地进行基本数据类型和对象类型的转换和比较,可以大大提高代码的执行效率和可读性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值