java数据类型:基本数据类型、引用数据类型;
基本数据类型(8个):
整型(4):byte short int long(64bit)
浮点型(2):float(32bit) double(64bit)
字符型(1):char (键盘上能输出的都是字符,加'')16bit Unicode编码;
布尔型(1):boolean 1bit true false
引用数据类型:
数组[]
类class(抽象类abstract class)
接口interface
枚举 enum
注解@interface
=====================================================
byte 字节型 1byte=8bit;00000000 256种组合;
用第一个bit位置来记录符号;0正数 1负数
数值的范围 -2的7次方 ——2的7次方-1
-128 —— 127
以上的其他整数类型,依次乘2
short 2字节=16bit 2的16次方=65536 数值范围 -2的15次方——2的15次方,即-32768——32767
int 4字节=32bit
long 8字节=64bit
float 32bit 4字节
为什么英文和符号和数字是一个字节;
为什么中文是两个字节?
ASCII 美国信息交换标准代码;
a-----00000000-----97
字母(26*2)+数字(10)+符号(约100) 一个字节256种组合,可以存储;
=====================================================================
常量
常量代表是程序运行过程中,不能再次改变的值;
常量的作用:
1.固定的值 代表计算过程中经常用到的值;
便于程序计算;
2.用来代表一个含义
1 2 3 4 分别代表上下左右四个方向;
什么样的值算是常量?
1.固定不变的值 算作常量;1 3.14 ‘a’ true
可以认为所有基本类型的值 固定不变 是常量
2.特殊的常量
“abc”(String类型)
String是一个引用数据类型,它的值很特殊,可以简单地视为常量;
3.自己创建的空间 存储一个值 让他固定起来 不能改变
final int UP =1;
变量
变量指的是 程序执行过程中可以改变的
变量是一个内存空间(小容器)
变量空间在创建(声明)的时候 必须指定数据类型 变量空间的名字
变量空间 里面只能存储一个内容(值 引用)
变量空间内的内容可以改变
创建变量时需要注意命名的问题(见名知义);
命名的规则:字母(区分大小写),数字(0-9,不允许开头),符号(英文符号_ $),中文(不推荐)
命名的规约:类名字 首字母大写 TestOne;
变量名(遵循驼峰式命名规约) 首字母小写 person superPerson
变量如何创建/声明;
数据类型 变量名字;
int a;
String b;
注意:变量是一个空间 可以只创建空间 里面不存放内容
变量空间创建后没有默认的内容 空的
空的变量空间不能拿来使用 编译错误;
byte x;//声明一个变量空间 空间的名字是x 空间内要求存储的类型是byte整数;
x = 1;//将一个1赋值到x空间内进行存储;
byte x = 1;
计算机底层做了什么事情;
1.x是什么? 变量空间,存储在哪儿?栈内存内(后进先出)
2.1是什么?1是常量 存在哪儿?常量缓冲区(只能查不能改)
3.=是什么? =是赋值 做了什么?
注释
1.单行注释;//
2.多行注释;/* */
3.文档注释;/** */
源码编译执行内存空间
float e = 3.4;报错:从double转换到float会有损失;
3.4 是 常量值;
存储在常量缓冲区中;
常量值得存储形式肯定不是十进制 是以二进制形式存储;
1 32bit(int)
3.4 64bit(double)
float 32bit
改为这样就可以;float e = 3.4F;
byte a = 1; byte 8bit;1 ---> int 32bit;
=赋值的时候做了一个自动的决定,自动类型转化;存储时,将其他无用的bit位,删除;
long类型的值,超过int类型(32bit)的取值范围,需要加L;
如果创建的常量值超过以上范围
程序编译检测的时候会认为 数字太大
如果我们真的需要那么大的数,需要加L;long d = 2L;(也是正确的)
字符和字符串的区别;
字符 char 基本 'a'
字符串 String 引用 "a" "abc" "" null
===========================================================
类型之间的转换问题
1.同种数据类型之间是可以直接进行赋值操作;
2.数据类型不同的空间之间的赋值-->转换问题;
同种大数据类型之间才能发生转换;
基本类型 与 基本类型之间 可以直接转换(自动 强制)
引用类型 与 引用类型之间 可以直接转换(自动 强制 上转型 下转型)
基本类型 与 引用类型之间 不可以直接转换(间接 包装类/封装类)
3.保证大数据类型一致的前提下
基本类型--基本类型
小数据类型相同:都是整型,浮点...(比较空间)
.自动直接转化就可以了
需要强制类型转换
大空间变量可以直接存储小空间的数据;(自动转换)
小空间变量不可以直接存储大空间的数据(需要强制类型转换)
转换过程写法都好用 如果转换的过程中数值范围超过边界,可能会有损失;
小数据类型不同
整型--浮点型 两个比较精确程度 浮点型精确程度更高,可以直接存储;
任何一个浮点型都可以直接存放一个整型的值;
浮点转整型需强制转换(只截取整数)
整型--字符型
每一个字符都对应着一个Unicode码 a--97
布尔类型很特殊
不能和其它类型之间发生转化;
char---字符---'a'--0000000000000000(二进制)---数值97---int