第9集:char、字符串入门、boolean
char、字符串入门
单引号用来表示字符常量。例如‘A’是一个字符,它与“A”是不同的,“A”表示含有一个字符的字符串。
char 类型用来表示在Unicode编码表中的字符。
-
Unicode编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536个字符;ASCII码占1个字节,可允许有128个字符,是Unicode编码表中前128个字符。
char eChar = 'a'; char cChar ='中';
-
Unicode具有从0到65535之间的编码,他们通常用从’u0000’到’uFFFF’之间的十六进制值来表示(前缀为u表示Unicode)
char c = '\u0061';
-
Java 语言中还允许使用转义字符 ‘’ 来将其后的字符转变为其它的含义。
char c2 = '\n'; //代表换行符
boolean
if ( is == true && done == false )
只有新手才那么写。
对于任何程序员if ( whether && !done )
都不难理解吧。所以去掉所有的==fasle
和 ==true
。
package test009;public class test009 { public static void main(String[] args){ /* char c1 = 'a'; char c3 = '是'; char c2 = '\n'; System.out.println(c1); System.out.println(c2); System.out.println(c3); */ char c4 = 'a'; int i = c4 + 2; char c5 = (char)i; System.out.println(c5); for(int j=0;j<26;j++){ char temp = (char)(c4+j); System.out.println(temp); } String str = "abcdefghijklmnopqrstuvwxyz"; System.out.println(str); boolean b = false; if(b){ System.out.print("true"); }else{ System.out.println("false"); } }}
第10集:基本数据类型自动转换、强制转型、类型提升问题
基本数据类型自动转换
一般规律:表数范围小的数据类型可自动转换为表数范围大的数据类型。
记住下图即可
int可以自动转换成float,为啥?主要因为能不能转换看的是表数范围,而不是看占用存储空间多少字节(int存储空间8字节、float存储空间4字节)。
-
特例:整型常量可直接赋值给byte、short、char等类型变量,不需要进行强制类型转换,只要不超过其表数范围即可。
//注意1:int i = 100;char a = 100;//正确,这是将整型常量赋值给achar a = i;//错误,这是将整型变量赋值给achar a = (char)i;//正确,这是将整型变量强制类型转换。//注意2:short b = 12;//OKshort b = 12345678;//NO
强制转型
强制类型转换,又被称为造型,用于显式的转换一个数值的类型. 在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。
当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值。
-
强制类型转换的语法格式:“(type)var”,运算符“()”中的type表示将值var想要转换成的目标数据类型。
double x = 3.14;int nx = (int)x;//值为3char c = 'a';int d = c+1;System.out.println(d);System.out.println((char)d);
类型提升问题
所有二元运算符都有类型提升问题
(+-*/%)
。-
提升方向为更大的容器。
int a=3;long b=4;//则a+b之后将变成long。
int a=20亿;int b=10;这时候
long c = long(a*b)
没用,a*b
结果出来的时候已经是int型了,应该是long c = (long)a*b
,这样的写法是先将a变成long,再提升a*b
结果的类型为long。-
在结果溢出前提升类型,等计算出来就晚了
byte a=10byte b=10byte c=10byte d=10short e = 10*10*10*10s与short e = 10s*10*10*10结果不同前者还没提升类型就已经溢出,后者先提升类型再溢出。//下面是本集代码package test010;public class test010 { public static void main(String[] args){ /* byte b = 123; //byte b2 = 300;//超过表数范围 //char c = -3;//超过表数范围 char c2 = 'a'; int i = c2; long d01 = 123213; float f = d01; */ //测试强制转换 int i2 = -100; char c3 = (char)i2; System.out.println(c3);//超过表数范围,所以转换为完全不同的值,无意义的值 //类型提升问题 int a = 3; long b = 4; double d = 5.3; int c = (int)(a+b); float f = (float)(a+d); int money = 1000000000; int years = 20; //long total = money*years;//返回负数 long total = (long)money*years; System.out.println(total); }}
第11集:【补充】JDK7特性:二进制整数/下划线分隔符
二进制整数
JDK7提供了二进制整数的类型,只要以0b开头即可。int a = 0b0101;
下划线分隔符
针对特别长的数字,读懂它令人头疼,这时候用下划线分割数字,可增加代码可读性。long a = 2222_2222_2222;
package test011;public class test011 { public static void main(String[] args){ int a = 0b0000_0000_0000_0000; int b = 1_2312_3131; System.out.println(a); System.out.println(b); }}
第12集:变量、成员变量、局部变量、常量的命名规范
变量(variable)
我们通过变量来操纵存储空间中的数据,变量就是指代这个存储空间!空间位置是确定的,但是里面放置什么值不确定!
Java是一种强类型语言,每个变量都必须声明其类型。
类型可以是8种基本类型,也可以是引用类型。
变量名必须是合法的标识符。
变量声明是一条完整的语句,因此每一个声明必须以分号结束。
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
-
变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储单元,声明格式为:
type varName [=value] [{,varName[=value]}] ;//[]代表可选
-
变量可划分为局部变量、实例变量(成员变量member variable)、静态变量(类变量static variable)
-
局部变量(local variable):方法或语句块内部定义的变量。生命周期是从声明位置开始到”}”为止。在使用前必须先声明和初始化(赋初值)。
public void incorrectLocalVariable(){ int i; i = 10; int j = i+5;//编译报错,变量i还未被初始化}
实例变量():方法外部、类的内部定义的变量。从属于对象,生命周期伴随对象始终。如果不自行初始化,他会自动初始化成该类型的默认初始值(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)
静态变量(类变量 static variable):使用static定义。 从属于类,生命周期伴随类始终,从类加载到卸载。如果不自行初始化,他会自动初始化成该类型的默认初始值(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)
-
变量命名规则(规范)
所有变量、方法、类名:见名知意
类成员变量:首字母小写和驼峰原则 : monthSalary
局部变量:首字母小写和驼峰原则
常量:大写字母和下划线:MAX_VALUE
类名:首字母大写和驼峰原则: Man, GoodMan
方法名:首字母小写和驼峰原则: run(), runRun()
package test012;public class test012_1 { public static void main(String[] args){ boolean flag = true; char c1,c2; c1 = '\u0041'; c2 = 'B'; int x; x = 9; int y = x; float f = 3.15f; double d = 3.1415926; }}package test012;public class test012_2 { public static void main(String[] args){ final double PI = 3.14; //PI = 3.15; //error double r = 4; double area = PI * r * r; double circle = 2 * PI * r; System.out.println("area = " + area); System.out.println("circle = " + circle); }}