(二)java的数据类型

十二.java数据类型

1.基本数据类型

数值型:整数类型,存放整数(byte[1],short[2],int[4],long[8])#浮点型(float[4],double[8])

字符型:char[2]

布尔类型:boolean[1],存放true和false

2.引用数据类型

类(class)//接口(interface)//数组[]

类型存储空间范围
byte[字节]1byte-128~127
short[短整型]2byte-215~215-1
int[整型]4byte-231~231-1
long[长整型]8byte-263~263-1
3.整型的细节

java程序中整型变量默认为int型,声明long类型的变量后面需加上L或者l

java中声明常量为int型,除非不足以表示大数才使用long类型

bit是计算机中的最小存储单位,byte:计算机中基本存储单元,1byte=8bit

4.浮点类型

浮点型的分类

类型占用存储空间
单精度float4byte
双精度double8byte

浮点数=符号位+指数位+尾数位

尾数部分可能丢失,造成精度损失(小数都是近似值)

float num1 = 1.1; //fakse
float num2 = 1.1F; //true
double num3 = 1.1; //true
double num4 = 1.1f; //true
double num5 = .123; //等价与0.123
System.out.println(num5); //0.123

//科学计数法
System.out.println(5.12e2); //512
System.out.println(5.12E2); //0.0512   

//通常情况下,应该使用double型,double要比float精准度更高
//[举例说明]
double num6 = 2.1234567891;
float num7 = 2.1234567891;
System.out.println(num6);
System.out.println(num7);

//浮点数使用陷阱	2.7和8.1/3
double num7 = 2.7
double num8 = 8.1 / 3 //2.7
System.out.println(num7); //2.7
System.out.println(num8); //无限接近2.7,但不等于2.7
if( num7 == num8 ) {
    System.out.println("相等");
}
if(Math.abs(num7 - num8) < 0.000001) {
    System.out.println("差值非常小,到我所规定的精度,认为相等");
}
System.out.println(Math.abs(num7 - num8));
//细节:如果是直接查询的小数或者直接复制,是可以判断相等的
5.字符型的使用与细节
char c1 = 'a';
char c2 = '\t';
char c2 = '韩';
char c2 = 97; //字符类型可以直接存放一个数字
字符型使用细节

1.字符型常量使用的单引号(‘’)括起来的单个字符,而双引号则是字符串类型的

2.char中可以使用转义字符

3.cahr 的本质是一个整数,在输出时,对应的unicode码对应的数值

4.直接给char赋一个整数,然后输出时,会按照对应的unicode字符输出

5.char运算时,相当于一个整数,都是它所对应的Unicode码

char c1 = 97;
System.out.println(c1);
char c2 = 'a';
System.out.println(int(c2)); //输出a对应的数字
char c3 = '席';
System.out.println(int(c3)); //输出席对应的ASCII码值
char c4 = 38889;
System.out.println(c4); //输出'韩'

System.out.println('a' + 10); //输出'107'

cahr c5 = 'b' + 1; //98 + 1 = 99
System.out.println(int(c5)); //99
System.out.println(c5); //输出'99'对应的字符

字符型存储到计算机中,需要将字符对应的码值找出来,例如:

存储:‘a’ == > 码值97 == > 二进制 == >存储

读取:二进制 == > 97 ==> ‘a’ ==> 显示

编码格式问题
编码格式描述
ASCII一个byte表示,一个128bit
unicode固定大小,汉字和字母统一两个byte
utf-8字母1byte,汉字3byte
gbk字母1byte,汉字2byte
big5繁体中文(香港,台湾)
6.布尔类型

不可以用0或者非0的整数来代替false和true.这点和c不同

boolean isPass = true;
if(isPass == true) {
    System.out.println("true"); 
} else {
    System.out.println("false"); 
}
7.数据类型转换

低精度自动向高精度进行转换(char,byte,short不自动类型转换)

char——>int——>long——>float——>double

byte——>short——>int——>long——>float——>double

int num = 'a'; //char——>int
double d1 = 80; //int——>double
System.out.println("num"); //97
System.out.println("d1"); //80.0
自动类型转换细节
//多种类的数据混合时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算
int n1 = 10;
float d1 = n1 + 1.1; //false,d1的结果是double类型
double d1 = n1 + 1.1; //true,d1的结果是double类型
double d1 = n1 + 1.1F; //true,d1的结果是float类型
int n2 = 1.1; //false,n2的结果是double类型

//char,byte,short不自动类型转换,把具体数值赋值给另外两种类型时候,要判断是否在该类型的范围之内,如果是就可以
byte b1 = 10; //对
int n2 = 1; 
byte b2 = n2; //false,byte容纳不下int类型的数据
byte b3 = 1000; //false,byte的范围是-128~127

//char,byte,short	三者在进行运算的时候,在计算时首先转换为int型,运算过后都会变成int型
byte b2 = 1; 
byte b3 = 1; 
short s1 = 1;
short s2 = b2 + s1; //false,s2为int型
byte b4 = b2 + b3; //false,b4为int型

//boolean类型不参与数据类型的转换
boolean pass = true;
int num = pass; //boolean不参与类型的自动转换

//运算表达式的结果为类型提升到操作数中最大的类型
byte b4 = 1;
short s3 = 100;
int num200 = 1;
float num300 = 1.1F;
double num500 = b4 + s3 + num200 + num300; //num为bouble
强制类型转换

强制类型转换的时候,将容量大的数据类型转换为容量小的数据类型,使用的时候要加上强制转换符号,但是也可能造成精度降低或者益处,格外注意

1.进行数据的大小从大————小,就需要使用强制转换

2.强制转换只针对最近的操作数有效,往往会使用小括号提升运算的优先级

3.char类型可以保存int的常量值,但是不能保存int变量值

int i = (int)1.9;
System.out.println(i); //1,损失精度

int j = 2000;
byte b1 = (byte)j;
System.out.println(b1); //数据溢出

char c1 = 100;
int m = 100;
char c2 = m; //false
System.out.println(c3); //数据溢出

//下列数据能否通过编译
short s = 12; //true
s = s - 9; //false  int->short

byte b = 10; //ok
b = b + 11; //false int->byte
b=(byte)(b+11); //true

char c = 'a'; //true
int i = 16; //true
float d = .314F; //true
double result = c + i + d; //true float->double

byte b = 16; //true
short s = 14; //true
short t = s + b; //false int->short
String类型的转换
  • 基本类型转String类型

    将基本类型的值+“” 即可

  • String类型转成基本数据类型

    通过基本类型的包装类调用parseXX方法即可

    int n1 = 100;
    float f1 = 1.1F;
    double d1 = 4.5;
    boolean b1 = true;
    String s1 = n1 +"";
    String s2 = f1 +"";
    String s3 = d1 +"";
    String s4 = b1 +"";
    System.out.println(s1 + "" + s2 + "" +s3 + "" + s4);
    System.out.println("=========================");
    
    String s5 = "123";
    //使用相应的包装类的对应方法,得到基本数据类型
    int num1 = Integer.parseInt(s5);
    double num2 = Double.parseDouble(s5);
    float num3 = Float.parseFloat(s5);
    long num4 = Long.parseLong(s5);
    byte num5 = Byte.parseByte(s5);
    short num6 = Short.parseShort(s5);
    boolean b = Boolean.parseBoolean("true"); //如果里面的数据不为true或false,则结果返回false
    
    System.out.println(num1); //123
    System.out.println(num1 + 1); //124
    System.out.println(s5 + 1); //1231
    System.out.println(num2); //123.0
    System.out.println(num3); //123.0
    System.out.println(num4); //123
    System.out.println(num5); //123
    System.out.println(num6); //123
    System.out.println(b); //true
    
    //把字符串转成字符,指的是得到字符串的首个字符
    System.out.println(s5.charAt(1));//将s5字符串中的第二个字符取出来
    

    在将string类型转换成基本数据类型时,要确保String类型能够转成有效的数据,可以把“123”转换为整数,但不能把“hello”转成一个整数,如果格式不正确的话,就会抛出异常,程序就会终止。

    练习
    //练习1:写出输出结果
    int n1;
    n1 = 13;
    int n2;
    n2 = 17;
    int n3;
    n3 = n1 + n2;
    System.out.println("n3=" + n3); //输出30
    int n4 = 38;
    int n5 = n4 - n3;
    System.out.println("n5=" + n5); //输出8
    
    //练习2:
    //1.使用char类型,分别保存\n,\t,\r,\\,1,2,3等字符,并打印输出
    char c1 = '\n'; //换行
    char c2 = '\t'; //制表位
    char c3 = '\r'; //回车
    char c4 = '\\'; //输出\
    char c5 = '1'; 
    char c6 = '2';
    char c7 = '3';
    System.out.println(c1);
    System.out.println(c2);
    System.out.println(c3);
    System.out.println(c4);
    System.out.println(c5);
    System.out.println(c6);
    System.out.println(c7);
    //2.保存两本书名,用+拼接,看效果。保存两个性别,用加号拼接,看效果。保存两本书价格,用加号拼接,看效果。
    String book1 = "狗子1";
    String book2 = "狗子2";
    System.out.println(book1 + book2);
    
    char c1 = '男';
    char c2 = '女';
    System.out.println(c1 + c2);
    
    double price1 = 123.453;
    double price2 = 120.11;
    System.out.println(price1 + price2);
    //3.编程实现如下的效果:
    //	姓名	年龄	成绩	性别	爱好
    //  xx	  xx    xx    xx    xx
    //要求:
    //用变量将姓名,年龄,成绩,性别,爱好存储;
    //使用+
    //添加适当的注释
    //添加转义字符,使用一条语句输出
    String name = "jack";
    int age = 20;
    double score = 80.9;
    char sex = '男';
    String hobby = "打篮球";
    System.out.println("姓名\t\t年龄\t成绩\t\t性别\t爱好\n" + name + "\t" + age + "\t" + score + "\t" + sex + "\t" + hobby + "\t");
    System.out.println("======================");
    System.out.println("姓名"+"\t"+"年龄\t成绩\t性别\t爱好\n" + name + age + score + sex + hobby);
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值