马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 零度非安全 于 2017-1-22 11:12 编辑
【Java 教程(原创)】索引帖
在这一部分我分四大块来讲,第一是标识符、第二是关键字、第三是基本数据类型,第四是基本数据类型的转换。
标识符
用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。我就简单点说标识符就是一个名字。它的语法规则如下:
1>标识符由字母、下划线、美元符号和数字组成,长度不受限制。
2>标识符的第一个字符不能是数字字符。
3>标识符不能是关键字(在后面我会列出Java中的关键字)。
4>标识符不能是true、false和null(尽管true、false和null不是关键字)。
例如:以下都是标识符哟:
Hello_java、Hello_12$、$23Boy
需要特别注意的是:标识符中的字母是区分大小写的,例如,hello和Hello是不同的标识符。给大家脑补下额外的知识
Java语言使用Unicode标准字符集,Unicode字符集由UNICODE协会管理并接受其技术上的修改,最多可以识别65536个字符,Unicode字符集的前128个字符刚好是ASCII码表。Unicode字符集还不能覆盖全部历史上的文字,但大部分国家的“字母表”的字母都是Unicode字符集中的一个字符,比如汉字中的“你”字就是Unicode字符集中的第20320个字符。Java所谓的字母包括了世界上大部分语言中的“字母表”,因此,Java所使用的字母不仅包括通常的字母a、b、c等,也包括汉语中的汉字、日文的片假名、朝鲜文、俄文、希腊字母以及其他许多语言中的文字。
关键字
关键字是Java语言中已经被赋予特定意义的一类单词,不可以把关键字作为标识符来用,切记,下面是Java的50个关键字:
abstract | assert | boolean | break | byte | case | catch | char | class | const | continue | default | do | double | else | enum | extends | final | finally | float | for | goto | if | implements | import | instanceof | int | interface | long | native | new | package | private | protected | public | return | short | static | strictfp | super | switch | synchronized | this | throw | throws | transient | try | void | volatile | while | 鱼油们大致浏览一下这些关键字哈
基本数据类型
基本数据类型也称为简单数据类型。Java语言有8种基本数据类型,分别是boolean、byte、short、int、long、float、double和char,这8种基本数据类型习惯上可分为4种类型。
逻辑类型 | boolean | 整数类型 | byte、short、int、long | 字符类型 | char | 浮点类型 | float、double
|
逻辑类型:
常量 | true、false | 变量 | 使用关键字boolean来声明逻辑变量,声明时也可以赋初值。例如:boolean x,ok = true,关闭 = false; |
整数类型:
整数类型分为4种。
1>int型
常量 | 123、6000()(十进制)、007(八进制)、0x3ABC(十六进制) | 变量 | 使用关键字int来声明int型变量,声明时也可以赋初值。例如:int x = 12,平均 = 9898,jiafei; |
关于int型变量的额外说明:
对于int型变量,内存分配4个字节(byte),一个字节由8位(bit)组成,4个字节占32位。对于int x = 7;,内存存储状态如下:
00000000 00000000 00000000 00000111
最高位(左边的第一位)是符号位,用来区分正数或负数,正数使用原码表示,最高位是0;负数用补码表示,最高位是1。例如,对于int x = -8,内存的存储状态如下:
11111111 11111111 11111111 11111000
要得到-8的补码,首先得到7的原码,然后将7的原码中的0变成1,1变成0,就是-8的补码。因此,int型变量的取值范围是-2^31~2^31-1。
2>byte型变量 | 使用关键字byte来声明byte型变量。例如:byte x = -12,tom = 28,漂亮 = 98; | 常量 | Java中不存在byte型常量的表示法,但可以把一定范围内的int型常量赋值给byte型变量。对于byte型变量,内存分配一个字节,占8位,因此byte型变量的取值范围是-2^7~2^7-1。如果需要强调一个整数是byte型数据,可以使用强制转换运算的结果来表示,例如:(byte)-12,(byte)28; |
3>short型
变量 | 使用关键字short来声明short型变量。例如:short x = 12,y = 1234; | 常量 | 和byte型类似,Java中也不存在short型常量的表示法,但可以把一定范围内的int型常量赋值给short型变量。对于short型变量,内存分配给两个字节,占16位,因此,short型变量的取值范围是-2^15~2^15-1。如果需要强调一个整数是short型数据,可以使用强制转换运算的结果来表示,例如:(short)-12,(short)28; |
4>long型
常量 | long型常量用后缀L来表示,例如108L(十进制)、07123L(八进制)、0x3ABCL(十六进制)。 | 变量 | 使用关键字long来声明long型变量。例如:long width = 12L,height = 2005L,length;对于long型变量,内存分配给8个字节,占64位,因此,long型变量的取值范围是-2^63~2^63-1。 |
字符类型:
常量 | 'A'、'b'、'?'、'!'、'9'、'好'、'\t'等,即用单引号括起来的Unicode表中的一个字符。 | 变量 | 使用关键字char来声明char型变量。例如:char ch = 'A',home = '家',handsome = '酷'; | 关于char型变量的额外说明:对于char型变量,内存分配个两个字节,占16位,最高位不是符号位,没有负数的char。char型变量的取值范围是0~65535,。对于下列语句:
char x = 'a';
内存x中存储的是97,97是字符a在Unicoode表中的排序位置。因此,允许将上面的语句写成:
char x = 97;
有些字符(如回车符)不能通过键盘输入到字符串或程序中,这时需要使用转义字符常量\n(换行)、\b(退格)、\t(水平制表符)、\'(单引号)、\"(双引号)、\\(反斜线)等。例如:
char ch1 = '\n',ch2 = '\"',ch3 = '\\';
再如,字符串"我喜欢使用双引号\"”中含有双引号字符,但是,如果写成“我喜欢使用双引号"”,就是一个非法字符串。
要观察一个字符在Unicode表中的顺序位置,可以使用int型显示转换,如(int)'a'或int p = 'a'。如果要得到一个0~65536的数所代表的Unicode表中相应位置上的字符,必须使用char型显示转换。
在下面的例子当中,分别用显示转换来显示一些字符在Unicode表中的位置,以及某些位置上的字符,运行效果如下图所示:
例子代码如下:
displayConversion.javapublic class displayConversion{
public static void main(String args[]){
char ch1 = 'w',ch2 = '好';
int p1 = 32831,p2 = 30452;
System.out.println(""" + ch1 + ""的位置:" + (int)ch1);
System.out.println(""" + ch2 + ""的位置:" + (int)ch2);
System.out.println("第" + p1 + "个位置上的字符是:" + (char)p1);
System.out.println("第" + p2 + "个位置上的字符是:" + (char)p2);
}
}
浮点类型:
浮点类型分为float和double型。
1>float型
常量 | 453.5439f、21379.987F、231.0f(小数表示法)、2e40f(2*10^40,指数表示法)。需要注意的是,常量后面必须要有后缀 f 或 F 。 | 变量 | 使用关键字float来声明float型变量。例如:float x = 22.76f,tom=1234.987f,weight=1e-12F; | 关于float型变量的额外说明:
float变量在存储float型数据时保留8位有效数字,实际精度取决于具体数值。例如,将常量12345.123456789f赋值给float变量x:
x = 12345.123456789f
那么,x存储的实际值是12345.123046875(保留8位有效数字)。
对于float型变量,内存分配给4个字节,占32位,float型变量的取值范围是10^-38~10^38和-10^38~10^-38。
2>double型
常量 | 2389.539d、2318908.987、0.05(小数表示)、1e-90(1*10^-90,指数表示法)。对于double常量,后面可以有后缀“d”或“D”,但允许省略该后缀。 | 变量 | 使用关键字double来声明double型变量。例如:double height = 23.345,width = 34.56D,length = 1e12; | 关于double型变量的额外说明:
double变量在存储double型数据时保留16位有效数字,实际精度取决于具体数值。对于double型变量,内存分配给8个字节,占64位,double型变量的取值范围是10^-308~10^308和-10^-308~10^308。
基本数据类型的转换
当把一种基本数据类型变量的值赋给另一种基本类型变量时,会涉及数据转换。在Java中,有些基本类型会涉及数据转换(不包括逻辑类型),将这些类型按精度从“低”到“高”排列为byte、short、char、int、long、float、double。
当把级别低的变量赋给级别高的变量时,系统会自动完成数据类型的转换。例如:如果输出x的值,结果将是100.0。
例如:int x = 50;
float y;
y = x;
如果输出y的值,结果将是50.0。
当把级别高的变量的值赋给级别低的变量时,必须使用显示类型转换运算。显示转换的格式如下:
(类型名)要转换的值;
例如:int x = (int)34.89;
long y = (long)56.98F;
int z = (int)1999L;
如果输出x、y和z的值,它们将是34、56和1999,强制转换运算可能导致精度的损失。
当把一个int型常量赋值给一个byte和short型变量时,不可以超出这些变量的取值范围,否则必须进行类型转换运算。例如,常量128属于int型常量,超出byte变量的取值范围,如果赋值给byte型变量,必须进行byte类型转换运算(将导致精度的损失),如下所示:byte a = (byte)128;
byte b = (byte)(-129);
那么a和b得到的值分别是-128和127。
另外,一个常见的错误是把一个double型常量赋值给float型变量时没有进行强制转换运算,例如:将导致语法错误,编译器将提示“possible loss of precision”。正确的做法是:float x = 12.4F;或float x = (float)12.4;
下面这个例子演示了基本数据类型转换的相互转换,运行效果如下图:
例子代码如下:
mutualTransformation.javapublic class mutualTransformation{
public static void main(String args[]){
int c = 128;
long d = 77777;
float f = 2e3F;
double g = 3.14e-300; //指数表示法
double result = f * g;
System.out.println("f = " + f);
System.out.println("g = " + g);
System.out.println("result = " + result);
g = 1234.123456789; //小数表示法
c = (int)d;
f = (float)g; //导致精度的损失
System.out.println("c = " + c);
System.out.println("d = " + d);
System.out.println("f = " + f);
System.out.println("g = " + g);
}
}
【特别注意】贴子中的栗子希望鱼油们能自觉的手动敲上去,不要单纯的复制粘贴保存,然后编译运行。
|