ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据类型

2021-04-03 21:01:05  阅读:124  来源: 互联网

标签:输出 int 数据类型 System println byte out


数据类型

强类型语言(安全但是速度慢)

  • 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用

弱类型语言

Java的类型分为两大类

  • 基本类型(primitive type)
  • 引用类型(reference type)

基本数据类型

  1. 数据类型
  2. boolean类型

数据类型

1.整数类型:

  1. byte占1个字节范围:-128~127
  2. short占2个字节范围:-32768~32767
  3. int占4个字节范围:-2147483648~2147483647(10位)
  4. long占8个字节范围:-9223372036854775808~9223372036854775807(19位)

2.浮点数(小数)类型:

  1. float占4个字节:,float类型要注明数据是float类型,例如float a=0.1f,
  2. double占8个字节:-9223372036854775808~9223372036854775807,double类型只能输出17位数

3.字符类型:

char占2个字节

boolean类型

boolean

占1位 且只有true和false两个值


字节

  • 位(bit):是计算机内部数据储存的最小单位,11001100是一个8位二进制数
  • 字节:(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示
  • 1B(byte,字节)=8bit(位)
  • 字符:是指计算机中使用的字母、数字、字和符号

数据类型扩展

浮点数

最好完全避免使用浮点数比较

最好完全避免使用浮点数比较

最好完全避免使用浮点数比较

举个栗子

 float f = 0.1f;  //0.1
        double d = 1.0/10;  //0.1
        System.out.println(f);
        System.out.println(d);
         System.out.println(f==d);  //false

定义并输出f,d的值

输出的而结果表示,f与d的值都是0.1,但是f与d不相等

float d1 = 212446545616545446546456131222f;
float d2 = d1+1;

System.out.println(d1==d2);

定义的d1和d2不相等,但是输出的结果是相等的

float 是有限的 离散的 存在舍入误差 结果是个大约数 接近但不等于等特点,于是最好完全避免使用浮点数比较

字符

所有的字符本质还是数字

任何的字符都是一个Unicode数

unicode编码占2字节,可表示65536个字符,现在可以表示更多

unicode是一张表 例如 97=a 65=A

char c1 = 'A';
char c2 = '中';
System.out.println(c1);       //输出c1
System.out.println((int) c1);  //强制转换 输出A的Unicode数
System.out.println(c2);       //输出c2
System.out.println((int) c2);  //强制转换 输出中的Unicode数

转义字符

\t 制表符

\n 换行

\b 退格

\r 退行,将当前位置移动到本行开头

\ \ ’ “ ?代表一个反斜线字符\ ’ ” ?

\0 空字符

还有很多转义字符

类型转换

类型转换

由于java是强类型语言,所以要进行有些运算的时候需要用到类型转换。

低------------------------------------------------------高

byte,short,char->int->long->float->double

运算中,不同类型的数据先转化为同一类型,然后进行运算


因此需要强制转换

int i= 128;
byte b =(byte)i;

输出结果

b的类型是byte,byte的内存是-128~127,128超出了内存,溢出而错误结果

强制转换 高–低,byte b=(byte)i就是高到低的强制转换

自动转换 低–高 例如

int i= 128;
double b =i; 

System.out.println((int)23.7);  //输出一个整数
System.out.println((int)-45.89f);  //输出一个整数

结果

结果出现了精度问题


char c='a';
int d=c+1;  //char转int,低转高自动转换
System.out.println(d);

结果为98

char c='a';
int d=c+1;  //char转int,低转高自动转换
System.out.println(d);
System.out.println((char) d); //高转低,强制转换a后面的是b

输出结果


public class Demon03 {
    public static void main(String[] args) {
        //操作比较大的数的时候,注意溢出问题
        //JDK7的新特性,数字之间可以用下划线分割
        int money =10_0000_0000;
        int years =20;
        int total =money*years;        //输出结果-1474836480,计算的时候溢出了
        long total2 = money*years;     //输出结果-1474836480,默认是int,转换之前已经存在为了错误
    long total3=money*((long)years);   //先把一个数转换为long,输出结果为2000000000
        System.out.println(total3);
    }
}
long money=1000000000L;//定义的一个数值为long
int month=20;
long total=moner*month;
System.out.println(total);//输出结果也是200000000

注意点

1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题

标签:输出,int,数据类型,System,println,byte,out
来源: https://blog.csdn.net/ht625/article/details/115420540

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有