单引号用来表示字符常量。例如‘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)spa
char c = '\u0061';
Java 语言中还容许使用转义字符 ‘’ 来将其后的字符转变为其它的含义。设计
char c2 = '\n'; //表明换行符
if ( is == true && done == false )
只有新手才那么写。
对于任何程序员if ( whether && !done )
都不难理解吧。因此去掉全部的==fasle
和 ==true
。code
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"); } } }
通常规律:表数范围小的数据类型可自动转换为表数范围大的数据类型。对象
记住下图便可生命周期
int能够自动转换成float,为啥?主要由于能不能转换看的是表数范围,而不是看占用存储空间多少字节(int存储空间8字节、float存储空间4字节)。ci
特例:整型常量可直接赋值给byte、short、char等类型变量,不须要进行强制类型转换,只要不超过其表数范围便可。作用域
//注意1: int i = 100; char a = 100;//正确,这是将整型常量赋值给a char a = i;//错误,这是将整型变量赋值给a char a = (char)i;//正确,这是将整型变量强制类型转换。 //注意2: short b = 12;//OK short b = 12345678;//NO
强制类型转换,又被称为造型,用于显式的转换一个数值的类型. 在有可能丢失信息的状况下进行的转换是经过造型来完成的,但可能形成精度下降或溢出。
当将一种类型强制转换成另外一种类型,而又超出了目标类型的表示范围,就会被截断成为一个彻底不一样的值。
强制类型转换的语法格式:“(type)var”,运算符“()”中的type表示将值var想要转换成的目标数据类型。
double x = 3.14; int nx = (int)x;//值为3 char 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=10 byte b=10 byte c=10 byte d=10 short 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); } }
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); } }
咱们经过变量来操纵存储空间中的数据,变量就是指代这个存储空间!空间位置是肯定的,可是里面放置什么值不肯定!
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); } }