今天是鸡年的大年初二,祝各位新年快乐哦鸡年大吉吧,嘿嘿..例行复习和总结下基础知识点.
粗略探索类型谜团
Java是注重类型的语言,它不会让你把大象类型变量装进老鼠类型变量中这种诡异危险的举动
除非程序员与编译器沟通确认可丢失精度(整数类型)
primitive数据类型2点.
1. Variables must have a type
2. Variables must have name
这2点必须要满足
primitive变量如杯子是一种容器,承装某些事物.从小排列如下
byte(茶杯)==>short(咖啡杯)==>int(杯酒杯)==>long(鱼缸)
每种杯子还有装载数值,就如去冷饮店说:我要大杯的双皮奶,程序员也需要告诉编译器:请给我一个int
变量保存值65535.每种简单的数据类型都有固定的大小(位数)
有2个小数类型变量
float double ..在使用时要注意,java在小数数据默认使用的是double类型.如果要使用float需要
float f = 2.11f; 字符类型Java规定默认为int 需要使用如下: char c = (char)22;
小心别把水(数据)溢出来
要确保变量能存下所保存的值,伟大的厨师也无法用一个小杯子装大杯的咖啡.
溢出表示会损失某些信息,也就是溢位.编译器会尝试防止这种情况发生.
Example: int x = 55; byte b = x; //error
程序员都知道 byte装 int类型的55是可以的..但编译器就死心眼,它不关心具体值是多少.只在乎类型
:它忽视在得意的告诉你,哈哈:菜鸟"你正在将大物体类型装进小容器中".别期待编译器能精准识别.
程序员需要自己判断了此时.
避开关键字
变量取名时要注意关键字(命名规则的关键).
1. 名称必须以字母,下划线或$符号开头,不能用数字开头.
2. 除了第一个字符之外,后面就是可以用数字.
3. 只要符合上面两条规则外,但是还得要避开Java的保留字
4. 取名一定要有意义符合当前代码的意思,不要随意AABBCC.为了代码界更加文明请注意礼节
对于非primitive数据类型
1. 事实上没有对象变量这样的事物存在.
2. 只有引用到对象的变量.
3. 对象引用变量保存的是存取对象的指路标.
4. 它并不是对象的容器,而是类似指向对象的指针.或者说是地址.它只是用来代表单一的对象,只有虚拟机
5. 才会知道如何使用引用来取得该对象.
对象存在于可回收垃圾的堆上.
primitive数据类型变量是以字节来代表实际变量值,但对象引用变量确实以字节来表示取得对象的指示表.
对象引用也只是个变量值,还是会有东西放进杯子中.只是放进去的是一个指示标(对象在堆中的内存地址).
区别primitive数据和引用
byte x = 7; //表示数据7的字节被放进变量中.
Dog myDog = new Dog(); //代表取得对象的指示标以字节形式放进了变量中.对象本身并没有放进去.
对象的声明,创建.与赋值
1. Dog myDog:声明一个引用变量要求虚拟机分配内存空间(statck)给引用变量,并将此变量命名为myDog.此引用.变量的类型被永远定格为Dog类型.
2. new Dog();:创建对象要求虚拟机分配(heap)空间给新建的Dog对象.
3. =: 连接对象和引用.将新的God的堆地址赋值给引用变量.
小问题:
引用变量有多大?
不知道.我们更关心应该需要多少个对象与引用.以及对象的实际空间大小.是否所有对象的引用都具有相同的大小,而不管它实际上所引用的对象大小?
是的,但不用平台的Java虚拟机可能会以不同的方式来表示引用.引用变量可运算吗?
不行.Java不是C.
….待续 2017年1月29日 周末 ZZ