马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
编码
- ASCII:用八位二进制的低七位,一共规定了128个字符的编码,一个字节表示一个字符,
- 扩展ASCII:第八位为1,规定了以1开头的128个字符
- Unicode:固定大小的编码,通常两个字节表示一个字符,字母和汉字统一用两个字节,浪费空间
- UTF-8:是一种变长的编码方式。字母用一个字节,汉字用三个字节,是在互联网上使用最广的一中Unicode的实现方式
- gbk:可以表示汉字,范围广,字母用一个字节,汉字用两个字节 ANSI编码 -- 不同地区采用的编码的统称
- UTF-8编码规则:
- 1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的 Unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的。
- 2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。
复制代码 编码大小支持语言ASCII1个字节英文Unicode2个字节(生僻字4个)所有语言UTF-81-6个字节,英文字母1个字节,汉字3个字节,生僻字4-6个字节所有语言基本语法
编写 Java 程序时,应注意以下几点:
- 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
- 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
- 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
- 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
- 主方法入口:所有的 Java 程序由 public static void main(String[] args) 方法开始执行。
标识符
Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
关于 Java 标识符,有以下几点需要注意:
- 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
- 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
- 关键字和保留字不能用作标识符
- 标识符是大小写敏感的
- 标识符不能包含空格
- 合法标识符举例:age、$salary、_value、__1_value
- 非法标识符举例:123abc、-salary
内置数据类型
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
byte:
- byte 数据类型是8位、有符号的,以二进制补码表示的整数;
- 最小值是 -128(-2^7);
- 最大值是 127(2^7-1);
- 默认值是 0;
- byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
- 例子:byte a = 100,byte b = -50。
short:
- short 数据类型是 16 位、有符号的以二进制补码表示的整数
- 最小值是 -32768(-2^15);
- 最大值是 32767(2^15 - 1);
- Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
- 默认值是 0;
- 例子:short s = 1000,short r = -20000。
int:
- int 数据类型是32位、有符号的以二进制补码表示的整数;
- 最小值是 -2,147,483,648(-2^31);
- 最大值是 2,147,483,647(2^31 - 1);
- 一般地整型变量默认为 int 类型;
- 默认值是 0 ;
- 例子:int a = 100000, int b = -200000。
long:
- long 数据类型是 64 位、有符号的以二进制补码表示的整数;
- 最小值是 -9,223,372,036,854,775,808(-2^63);
- 最大值是 9,223,372,036,854,775,807(2^63 -1);
- 这种类型主要使用在需要比较大整数的系统上;
- 默认值是 0L;
- 例子: long a = 100000L,Long b = -200000L。
"L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。- //注意:java对于整型的默认类型为int,数的末尾要加上L
- long n1 = 100L;
复制代码 float:
- float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
- float 在储存大型浮点数组的时候可节省内存空间;
- 默认值是 0.0f;
- 浮点数不能用来表示精确的值,如货币;
- 例子:float f1 = 234.5f。
- //Java对于浮点数的默认类型为double
- float f1 = 1.1f; //末尾的f不可省,否则相当于八个字节的数据放到四个字节,编译会报错
复制代码 double:
- double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;
- 浮点数的默认类型为double类型;
- double类型同样不能表示精确的值,如货币;
- 默认值是 0.0d;
- 例子:double d1 = 123.4。
- System.out.println(8.1/3); //结果为2.6999999999999997
- //尽量不要直接判断两个浮点数是否相等,应该以两个数的差值的绝对值是否在某个精度范围内来判断两个浮点数是否相等
- System.out.println(5.2e1); //结果为52.0 注意末尾的0不可以省略
复制代码 boolean:
- boolean数据类型表示一位的信息;
- 只有两个取值:true 和 false;
- 这种类型只作为一种标志来记录 true/false 情况;
- 默认值是 false;
- 例子:boolean one = true。
不可以用0/1代替false/true,只有两个值
char:
- char类型是一个单一的 16 位 Unicode 字符 两个字节;
- 最小值是 \u0000(即为0);
- 最大值是 \uffff(即为65,535);
- char 数据类型可以储存任何字符;
- 例子:char letter = 'A';。
注:字符型的本质,其实是字符对应的ASCII编码
自动类型转换
- 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算
- int n1 = 10;
- float t1 = n1 + 1.1; //错误,系统会将n1 + 1.1的结果转为默认的double类型,将8字节的double赋给4字节的float会报错
- float t2 = n1 + 1.1F; //正确
复制代码 - 当把精度大的数据类型赋给精度小的数据类型时,就会报错,反之就会进行自动类型转换
- (byte , short ) 和 char 之间不会相互自动类型转换
- byte b1 = 10; //当把数赋给byte时,先判断该数是否在byte范围内[-128,127],在就没问题
- int n2 = 1;
- byte b2 = n2; //错误,只有赋的是具体的数时,才会先判断该数是否在byte范围内
- char c1 = b1; //char与byte之间不能相互自动类型转换
- short s1 = b1; //short与byte之间同样也不能相互自动类型转换
复制代码 - byte , short , char 他们三者之间可以计算,在计算时首先转换为int类型
- byte b1 = 1;
- byte b2 = 2;
- short s1 = b1 + b2; //错误,计算后的结果为int
- char c1 = b1 + b2; //错误,原因同上
- int s2 = b1 + b2; //correct
复制代码 - Boolean类型不参与自动类型转换
- 自动提升原则,表达式结果的类型自动提升为操作数中精度最高的类型
强制类型转换
当进行数据精度大小 由大到小的转换时,就需要用到强制类型转换
- int n1 = (int)1.9;
- System.out.println("n1="+n1); //n1=1
- int n2 = 2000;
- byte b1 = (byte)n2;
- System.out.println("b1="+b1); //b1=-48 发生溢出
复制代码强制类型强转只针对最近的操作数有效,往往会用小括号提高优先级
- int x = (int)10*3.5+2.4; //错误,不能将double转换为int
- int x = (int)(10*3.5+2.4); //正确 37.4->37
复制代码char类型可以保存int的常量值,但不能保存int的变量值,需要强转
byte ,short 和 char 类型在进行运算时,当做int类型处理
基本类型与字符串的转换 |