📄 02_identifier_basictype.txt
字号:
标识符:
用于给类,变量,方法,包命名.
$ _ 数字 字母,第一个不能是数字
约定俗称的习惯:
类名:每个单词的首字母大写.
属性和方法:第一个单词全小写以后每个单词首字母大写.
这些都是习惯,可以不按照这样的规定,编译器不会给你报错.(但会被人鄙视)
例
class Person{
public String userName;
public void setUserName(){
}
public void getUserName(){
}
}
包名:全小写
常量:全大写,用"_"分隔每个单词
字符集
java的字符集使用的是unicode字符集.
这个字符集除了收集英文字符以外还包含了汉字的字符集.
也就是说可以用汉字来命名类名或者变量名.
关键字
有个关键字enum是java1.5里面加入的.
strictfp这个关键字很生僻.
jdk5.0里面有50个关键字.
很多和C++是一样的.
被取消的关键字
goto和const都被保留下来了,但在java语言里面是没有意义的.
java中实说这两个单词我保留了,但是我不用,可能希望将来希望使用.
const
不使用了, 被java中的 final来代替.
goto
不使用,java中没有取代它.那么C++里面的goto被java取消了.这个语句会使你的程序变得没有结构性.
使用了goto还非常容易出现死循环.
goto主要应用在多层嵌套循环的内部直接的跳到最外层.
java中的break
java是怎么样解决这个问题,它使用的是break,但是在break后面可以带有语句标号;
break loop1;
true和false
表示这boolean的字面值.
boolean
对应c++中bool
c++中的sizeof关键字没有了.
这个关键字是用来判断某个类型占据的内存空间的大小.
为什么要使用sizeof.因为C++在不同平台下int所占用的字节数是不同的.
java语言不论你在什么样的平台下:
只要你在源程序中定义的是int它就认为是4个字节.
把底层的平台数据字节数,通过jvm屏蔽掉了.
数据类型:
八种基本数据类型
boolean 表示true和false 单独的提取出来了.
在C++种经常犯一些错误.
char c;
while(c=getChar()!='\0'){
.....;
}
这里完成的是把一个bool值赋值给一个字符变量,C++的编译器是检查不出来这样的错误的.
但java里面编译器是可以检查的出来这样的错误的.
因为java种的逻辑boolean值是单独被提取出来的.
位数 取值范围
整型:
byte 8bit 2^8 -128~127 共 256个
int 32bit -2^31~2^31-1
2^31=2^30*2=1024*1024*1024*2=2G>20亿
long 64bit -2^63~2^63-1
short 16bit 2^16 -32768~32767
char 16bit 保存nuicode字符编码值
实型:
double 64bit
float 32bit 只有四个字节,因为是近似存储.
char
ASCII 0~127 后面的是IBM扩充的ascii的全表
它的存储方式和整数的存储方式一样的
unicode就把主要语种的字符包含进去了,
65535个位置,而常用的汉字也不过5000多个.
char和short不同在取值范围的不同.
short是 -32768~32767
char 是 0~65535
整型数据的内存存储原则:
正整数 直接存储二进制原码
负整数 直接存储二进制补码 在原码的基础上按位求反末位加一.
-28 00011100----求补码--->11100100
符号位:补码的最高位是一,原码的最高位是零.
实型数据的存储方式
float 32bit 前三个字节存储数值,后一个字节存储位权
3.14156 = 314156 , -5 =314156*10^-5
double 64bit 前6个字节存储数值,后两个字节存储位权.
java语言里面没有无符号的概念
类型转化:
数值类型的转换原则:
从小范围的值转换成大范围的值可以自动进行,否则需要强制进行.
如果要把a=b,a这种类型的取值范围要完全包容b类型的取值范围.
如果不能够完全包容就不能自动转换.
byte转换成short 可以自动进行.
byte->short char->int short->int int->long long->float float->double
float的取值范围没有,因为是近似存储.所以可以包容double
byte有负数char不能表示负数,所以byte不能自动转char
强制类型转换规则:
把int转换成byte,去掉高位保留低位存入byte;
int a=0x17ff;byte b=(byte)a;System.out.println(a);-1
自动类型转换也会造成数据丢失
从int->float long->float long->double
float和double本身故有的存储空间大小决定的.
float只用前三的字节存储数据.
double只用前六个字节存储数据.
这样有可能造成低8位的数据丢失.
int 自动转换成 float的时候,如果int值大于float保存数据可以存储的范围,那么自动类型转换会把int类型值的低8位舍弃.
字符类型和整形的关系
int a='0'; char b='\u0048';
System.out.println(a);
"abc"
long la=1234567L;在数字后面直接跟上L表示长整形.
byte b=123;这样就是可以的.但是不可以 byte b=129;
对于数字标量 byte short char 可以直接的赋值.
float f=123.22;错,应当float f=123.22F;
double d=123.22;对,希望表示double值可以double d=123D;如果不给出D也可以.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -