小仙的第三天 变量和常量

192 阅读6分钟

▼关键词和保留字
▼变量和类命名规范
▼pascal和驼峰法异同

▼数据类型
▼最大值2^7 - 1不是127原因
▼3种进制

▼数值型和浮点型隐式缺省值
▼float和double类型的精度
▼浮点类型范围大于整数类型原因

▼char类型可接收字符字面值和整数字面值
▼char类型与short类型比较 

▼unicode统一码

▼字符串

▼回车符换行符

▼引号和转义

▼基本数据类型转换
▼常量命名规范

java的包package名是域名倒写,安卓app的包名都是这么来的吧

包名com.immoc对应域名的点生成文件路径时,变成src/com/immoc,bin目录存放class文件同样生成.

java的class文件放在bin目录,class文件是二进制的.

▼关键词和保留字

关键字,是对编译器有特殊意义的词.编译器根据关键字理解语义.

java中的关键字和保留字是区分大小写的,标识符不能与他们相同,例如不能用void但可用Void.一部分语言是不区分关键字大小写的.

保留字,预留的关键字,例goto,java现在不使用,保留,以后升级版本可能使用,用户不能定义与保留字相同的标识符.

▼变量和类命名规范

变量名命名规范,驼峰法

单个单词小写,多个单词首字母小写后续词首字母大写.变量名长度无限.

类的命名规范,pascal帕斯卡命名规范

一个单词,首字母大写,多个单词,每个词首皆大写.

▼pascal和驼峰法异同

驼峰法首词小写,后续各个词首大写.pascal规范所有词首都大写.

▼数据类型

数组属于引用数据类型,那传递时是引用.一部分语言中,数组是直接传值的.

数据类型里没有包含,list,set等结构.

详细[背]

▼最大值2^7 - 1不是127原因

最大整数:0  1  1  1   1  1  1  1,

对应:  2^7, 2^6,2^5,2^4, 2^3,2^2,2^1,2^0,

最大值=2^6+2^5+2^4+ 2^3+2^2+2^1+2^0 = 2^7 - 1 = 127

▼3种进制

八进制和十六进制 是以0开头,不是字母"O"开头;十六进制的"x"不区分大小写.

12 十进制;

012 八进制;

0x12 十六进制; 

0X12L 十六进制长整型

▼数值型和浮点型隐式缺省值

数值型缺省为整型int,浮点型缺省为double双精度浮点型.例float f=1.23f;必须显示指定末尾f覆盖缺省d,因为d长度大于f无法存入,会报错;小存入大可以,大存入小存不下报错;

▼float和double类型的精度

float小数部分只能精确到后面 6位,   有效位数7位;[测试发现小数位7位,6位准确,第7位不准确]

double小数部分精确到小数点后15位,有效位数为16位;[测试发现小数位16位]

double类型范围大于int和long,例 double d=123;和double d=123L;小存入大不会报错;

科学计数法是 6 位;精度为7(精度是小数位的位数);

▼浮点类型范围大于整数类型原因

int和long长度 : 4和8;

float和double长度 : 4和8;

长度相同,但数据结构不同,浮点型数据存储使用二进制科学计数法,都包含三个部分:符号位,指数位和尾数部分。其中float的符号位,指数位,尾数部分分别为1, 8, 23. 双精度分别为1, 11, 52。

编程练习题

package com.xian;

public class BaseTypeDemo {
	public static void main(String[] args) {
		float f1 = 98.4f;
		float f2 = f1;
		int n = 55;
		double d1 = 555.3;
		d1 = n;

		System.out.println("f1="+f1);
		System.out.println("f2="+f2);
		System.out.println("n="+n);
		System.out.println("d1="+d1);
	}
}

▼char类型可接收字符字面值和整数字面值

char类型读入值之后根据ascii码表将对应码值存入内存,这也就是char类型可以直接char c=65;输出A的原因;

char类型的数据表示一个字符,例如a 或者1,只能用单引号表示,不能用双引号.双引号表示的是字符串,用String类型[引用类型]存储.

▼char类型与short类型比较

对于char类型,占2个字节,共16位,这相当于short型的长度,但char型是无符号的整型,最大值65535;

char类型是存放字符,应用场景应该没有大小范围之分,若要研究数字大小,那应该是字符映射ascii码,ascii码是数值型(例如A的ascii码=65),那么char字符型应该也可存储数值,当作数值型来用,那其长度与short型等同.so,char ch = 65536;需要改成char ch = (char)65536;因为short型范围最大值2^16 - 1= 65536 - 1=65535,显而易见65536超出short型(在int型),为啥是2^16,不是2^15,因为对于short型共2字节16位,从0开始,最高位为15,借1位做符号位,最高位为14,前14位之和=15位对应值减1,但char型没有符号位借位.

字符类型编程练习题

package com.xian;

public class CharTest {
	public static void main(String[] args) {
		char c='A';
		System.out.println("c="+c);
		char c1=65;
		System.out.println("c1="+c1);

		char c2='S';
		System.out.println("c2="+c2);
		char c3=78;
		System.out.println("c3="+c3);
	}
}

▼unicode统一码

unicode统一字符编码,简称统一码,出现背景ASCII码不支持其他语言.

char类型值可以为unicode编码,unicode编码格式特点:\u + 4位十六进制 (4位,多了少了都不行).例char c = '\u005d'.

▼字符串

字符串是 双引号 引起来的0个或多个字符.只能是双引号.

▼回车符换行符

一般情况所说的回车,包含回车换行两个操作

\r是回车,回到行开始的地方

\n是换行

▼引号和转义

双引号可直接解析转义符,例如"\t",当用单引号时'\t',如果是字符串运算,则正常解析转义符,如果是数值运算,则'\t'根据char型特点自动转换成数值参与运算.

▼科学计数法

1.23 * 10^5 科学计数法表示 1.23 * E5 简化省略乘号 1.23E5或1.23e5

.2 代表 0.2

▼基本数据类型转换

int,long都能自动转成浮点型,浮点型都不能自动转数值型,都是单向的,唯独int转double是实线;

无论虚线实线,都可以自动转换(隐式),丢失精度;

基本数据类型转换练习题

package com.xian;

public class TypeConvert {
	public static void main(String[] args) {
		int priorInt = 67832;
		char c = (char)priorInt;
		System.out.println("c="+c);

		int n = 65;
		char c1 = (char)n;
		System.out.println("c1="+c1);

		long l = 987654321L;
		int i = (int)l;
		System.out.println("i="+i);
		float f = l;
		System.out.println("f="+f);
		l = (long)f;
		System.out.println("l="+l);

		double d=987654321987654321l;
		System.out.println("d="+d);

	}
}

▼常量命名规范

命名规范:所有字符大写,多个单词组合使用下划线连接,不是pascal;