A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 仙兒哥 中级黑马   /  2013-4-10 02:11  /  1003 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

三 数据类型
3.1 8种基本数据类型
Java中的数据类型分为两类
                     基本型数据(四类八种)                                    //现在研究基本类型
引用型数据类型(除了基本型外都叫引用)        //面向对象时用
            
              注意:基本数据类型存的是值,引用数据类型存的是地址

基本型分四类八种
1.byte            字节型           1字节8位            -128   +127  //1byte字节=8bit比特位(开关)
              2.short           短整型           2字节16位          -32768 +32767
              3.int               整形              4字节32位          -2147483648 +2147483647
4.long            长整形           8字节64位          取值范围天文数字
              5.float            单精度           4字节32位
              6.double         双精度           8字节64位
7.char            字符型           2字节16位          取值范围‘ ’ “” //“”可以存在,代表没有内容的空字符串
              8.boolean       布尔型                                       取值范围true false,虚拟机运行时用1.0代表二进制

              注意事项
1.在定义变量时,给其赋值时不要超出这个类型表示的最大值与最小值范围,其中每个类型占多少空间是强制规定的,开发中不是占空间大或小就好,而是正好能装,
2.定义long型数据时数据结尾处使用l标识不管超不超   long a=1000000000L
3.定义float型数据时数据结尾处使用f标识        float b=3.1415926F
4.char是否可以描述一个汉字,如果可以为什么?  一个汉字占两个字节,char用两个字节描述的,所以可以接受汉字
5.在定义变量时,要注意给其赋值时不要超出这个类型表示的最大值最小值范围

byte取值范围
Java中的数有正负,,用二进制描述时,最高位代表的是符号位,0代表正,1代表负,所以
byte取值范围就是 -128到+127之间共256个数 开发中要用的数据再此期间就用byte

                     字符型char演示
char c='a'        //1,必须加上单引号
char c=65       //2,如果再声明char时,对其赋值是一个数,那么代表的是对应的unicode码值
                                   //简单说就是讲unicode吗表中的码值位65对应的字符赋值给c就显示的a被
                                          //java采用的是unicode码表它里面定义了65536个字符(char2个字节16位吗)
                                          char在内存中占用2个字节,最多可以表示65536个,也就是说可以取0到65535这些值,
                                          那么这些值就与unicode买包中的每个字符对应
System.out.println(c);

各种数据类型的默认类型
          整数默认int     默认值0
          小树默认double  默认值0.0
          字符            默认值unicode码表中的第一个字符,无显示效果
          布尔类型        默认值false
               引用类型              默认值为null


定义基本数据类型作用
为每种数据在内存中开辟大小不同空间 优化运算 (强类型语言规范性严谨 便于大家共用开发)

3.2 变量在内存中的变化
补图
四 基本数据类型转换
4.1 基本数据类型转换
指的是整型,浮点型,字符型之间转换,没有boolean类型什么事情

不同数据类型之间不能直接运算,所以要自动类型提升(JAVA自动提升)

4.2 转换规则
精度从高到低
double > float > long > int > short > char > byte
在类型转换时查看等号左右两边个如果左边高右边低,那么自动如果左边低右边高强制
byte.short.char再参与运算后会自动提升为int

自动转换     
低精度>高精度,自动转换                       (也叫隐式类型转换)

举例:
byte b = 3;
int x = 4;
x = x + b;       //b会自动提升为int类型进行运算
                                   举例
                                          double d=1.23;
d=10; //这个时候是将一个int数据赋值给double类型输出结果10.0

强制转换     
高精度>低精度,需要手动强制转换         (也叫显式类型转换)(强转换可能出现问题,损失精度和溢出)

                                   举例
byte b = 3;
b=b + 4;                //报错,b是byte类型,4是int类型,运算时b自动提升为int,得到的int类型结果不能赋给byte
b= (byte)(b+4);      //强制类型转换

举例
byte b=100;           //1,100是一个常量,2编译器检查时会看该值是否在byte范围内,如果在则自动转换赋值给b
举例
int i=10;
i=1.23;//将一个double值1.23赋值给了int类型的变量报错

丢失精度:小数点问题是精度问题
内存溢出:大空间装到小空间就是溢出
4.3 变量一些细节练习

int i=1.2;                      //出问题.小数型不能放到int型
int i=(int)1.2;                //强转

byte b=10;                    //jvm会自动检测等号右边的常量值是否在左边类型范围内,如果在这个范围内,那么是可以直接赋值。
float f=1.23;                 //因为浮点型不能用二进制精度描述。

byte b=3;
int x=4;
x=x+b ;                        //b会自动提升为int类型进行运算,小空间装到大空间中,

byte b = 3;
b=b + 4;                       //报错,因为b是个变量 b+4结果不确定不是常量
b= (byte)(b+4);             //强制类型转换

五Java中的运算符与表达式
为什么要用到运算符与表达式
把常量用变量存储后需要运算 什么值参与运算并不知道 运算就涉及到了新运算符

运算符,操作数,表达式的概念
运算符
+ - * / % > < 等这些叫
操作数
a+b +就是操作符 a,b就是操作数
              表达式
使用操作符将操作数连接的式子叫表达式

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马