Java基础(二) 注释和基本数据类型
- 标识符
- 关键字
- 基本数据类型
1. 标识符
1.1 注释
Java中的注释主要包括三种类型,单行注释、多行注释、文件注释。
-
单行注释
//
符号可以注释Java文件中的一行代码,例如://int number=0;
这行代码在编译的时候,编译器会自动忽略这行代码。
-
多行注释
/* */
可以注释Java文件中的多行代码,但是需要注意的一点是,/**/
不能够相互嵌套使用。 -
文件注释
/** **/
,和多行注释相同,在文件注释符号之内的所有内容,都会被编译器忽视。而它与多行注释不同的是,文档注释通常和JavaDoc关联甚是密切,通常用来描述类文件的一些基本信息,例如:类编写人、类编写时间、类及方法的描述等等。其中常用的标识符号有:
标识符 | 说明 |
---|---|
@Author | 类的作者 |
@version | 类的版本 |
@param | 类的参数 |
@return | 方法的返回值类型 |
@Exception | 方法抛出的异常 |
@see | 另外参照 |
@since | 从什么时候开始使用的 |
For Example:
package com.us.demo.javadoc;
/**
* @author Sean
* @version v1.0
* @since 2017-01-20
**/
public class Example {
/**
* @author Sean
* @since 2017-01-20
* @param String []args
* @return void
* **/
public static void main(String []args){
System.out.println("This is a JavaDoc Example.");
}
}
JavaDoc操作: javadoc -d doc -author -version src/*.java
localhost:javadoc Sean$ javadoc -d doc -author -version Example.java
1.2 分号、代码块和空格
-
分号
在Java中,只有一句代码书写结束之后需要加分号,例如:
int a=0;
。
PS:和C++不同的是Java在类声明的结尾不用加;
分号作为结束符号。 -
代码块
通常
{ }
,花括号包含的代码被称为代码块。 -
空格
Java内空格可以任意写,但是需要注意的是变量名或关键字不可以将空格座位分割,例如:
in t
。否则,Java编译器将无法识别关键字或变量。
1.3 标识符命名
Java内的标识符命名和C++有一点区别,通常包括如下几个要点:
- 变量名必须以$、字母和 _ 开头。(不能以数字开头)
- 第2-N个字符必须为 数字、字母、_ 和 $符号。
- 标识符名称不能为Java关键字和预留字。何为Java关键字和预留字,这个后面会进行讲解。
另:Java内的标识符不限制长度,但是大小写敏感(就是Java内是区分大小写 Hello和hello是不同的)。
2. 关键字
Java内的关键字有很多,通常被分为如下的几个类别:
- 类和接口的声明:class、interface、extends、implements
- 包和包的引入声明:import、packages
- 基础数据类型:byte、short、int、long、float、double、boolean、char、string
- 某些数据类型的可选值:false、true、null
- 流程控制:if、else、do、while、for、foreach、switch、case、break continue
- 异常处理:try、catch、finally、throw、throws
- 创建对象:new
- 对象的引用:super、this
- 方法返回值类型:void 及基础数据类型
- 操作符:instanceof
- 修饰符:public、protected、private、final、static、synichronized、native、transient、volatile
注意:
Java语言的保留字是指预留的关键字,它们虽然现在没有作为关键字,但在以后的升级版本中有可能作为关键字。
- 所有关键字都是小写;
- friendly, sizeof不是Java语言的关键字,这有别于C++;
- 程序中标识符不能以关键字命名;
3. 数据类型
Java内共有8种基础的数据类型,分别为:byte、int、short、long、float、double、char、boolean,当然还有string Array等其他数据类型。
3.1 数据类型分类
Java内将数据类型分成基本数据类型
和引用数据类型
。
-
基本数据类型
Java内共有8种基本数据类型,分别是:byte、int、short、long、float、double、char和boolean。
-
基本数据类型
byte 8位
short 16位
int 32位
long 64位
float 32位
double 64位
boolean 8位
char 16位java中采用unicode编码,所以是俩个字节表示一个字符,那也就是说在其他字符编码中可能不是使用俩个字节表示一个字符.比如UTF-8貌似是1个字节表示一个字符,GB2312、GBK等等不太了解。
-
引用数据类型
类类型、接口类型和数组类型。
3.2 基础数据类型详解
3.2.1 整数类型
byte、short、int和long都是带符号整数类型。带符号整数和无符号整数的区别在于二进制转换为十进制的符号位数不太一样。
有符号整数的首位为符号位,无符号位的首位就是数字位。举一个例子,比如byte类型有8位,无符号位就可以表示2^8-1 也就是255个数字,也就是0-255.而有符号位因为首位位符号位,所以表示的数字位-128-127(因为符号位会出现 +0 和 -0的情况。所以,将-0记作-128)。
所以byte表示的数字为 -128 - +127。
Java语言内部,为了区分不同进制的数据,八进制以“0”开头,十六进制以“0x”开头。
一个字节的二进制数 八进制数 十六进制数 有符号十进制数 无符号十进制数
----------------------------------------------------------
0000 0000 0000 0x00 0 0
1111 1111 0377 0xFF -1 255
0111 1111 0177 0x7F 127 127
1000 0000 0200 0x80 -128 128
整形型: 默认数据类型是int
byte (8位)
byte a = 10;
short (16位)
short a = 20;
int (32位)
int a = 30;
long (64位)
long a = 40L;
long b = 50l;
声明的时候后面要加大写L或者小写l,建议加上大写的L,因为小写的l和数字1很像似
3.2.2 浮点数类型
浮点数:Java中表示小数的数据类型。浮点型:默认数据类型是double。
float (32位) float a = 10.3f;
double (64位) double a = 10.8d;
3.2.3 布尔数据类型
从前貌似有一个数学家,发明了布尔函数,用来表示一个事件是否正确。在布尔函数内,它的值除了true,就是false。
在JVM内部,通常会将布尔函数的true和false记作 1和0.
boolean flag01=true; //flag01=1;
boolean flag02=false; //flag02=0;
3.2.4 Char数据类型
Char数据类型是基本数据类型,而String数据类型是类类型。String数据类型是由Char数据类型的数组构成的。由此,也可以将String数据类型看作为Char数据类型的集合体。
3.2.4.1 常见的字符编码类型
Java语言对文本字符采用Unicode字符编码。由于计算机内存只能存取二进制数据(即数字0和1),因此必须为各个字符进行编码。
所谓字符编码,是指用一串二进制数据来表示特定的字符。比如常见的ASCII码中,48表示字符’0’,即二进制‘0011 0000’表示字符’0’。
常见的字符编码包括:
-
ASCII字符编码
ASCII–Amecian Standard Code for Information Interchange(美国信息交换标准代码). 主用于表达现代英语和其他西欧语言中的字符。它是现今最通用的单字节编码系统,它只用一个字节的7位,一共表示128个字符。(共可以表示2^7个数字,也就是128,所以可以表示128个字符。)
-
ISO-8959-1字符编码
又称为Latin-1, 是国际标准化组织(ISO)为西欧语言中的字符制定的编码,用一个字节(8位)来为字符编码,与ASCII字符编码兼容。所谓兼容,是指对于相同的字符,它的ASCII字符编码和ISO-8859-1字符编码相同。(即保留了ASCII内的原字符编码,也就是前128位仍然适用的是ASCII的编码,在128位后面添加了自己的编码。)
-
GB2312字符编码
它包括对简体中文字符的编码,一共收录了7445个字符(6763个汉字+682个其他字符. 它与ASCII字符编码兼容。
GBK字符编码
对GB2312字符编码的扩展,收录了21886个字符(21003个字符+其它字符), 它与GB2312字符编码兼容。-
Unicode字符编码:
由国际Unicode协会编制,收录了全世界所有语言文字中的字符,是一种跨平台的字符编码。
UCS(Universal Character Set)是指采用Unicode字符编码的通用字符集。
Unicode具有两种编码方案:
- 用2个字节(16位)编码,被称为UCS-2, Java语言采用;
- 用4个字节(32位)编码,被称为UCS-4;
UTF字符编码
有些操作系统不完全支持16位或32位的Unicode字符编码,UTF(UCS Transformation Format)字符编码能够把Unicode字符编码转换为操作系统支持的编码,常见的UTF字符编码包括UTF-8, UTF-7和UTF-16.-
小结
首先有128个字符的ASCII编码,随后在ASCII上扩充为ISO-8959-1字符编码。
中国人为了让其支持国标(即简体汉字),在ASCII编码的基础上,制定了GB2312编码,*当局为了适用繁体中文,在GB2312基础上扩充了GBK。
随后国际字符委员会为了能够同意字符,制定了Unicode字符编码,标准为UCS-2和UCS-4。但是有的系统不能支持Unicode标准,于是,人们又创造了UTF-8等UTF编码,为了能将Unicode编码转化为操作系统可以识别的编码。
3.2.4.2 Char数据类型的几种可能取值
Java内的Char数据类型采用的是Unicode字符编码,1个字符占2个字节。
比如字符’a’的十进制表示为97,二进制表示为 0000 0000 0110 0001,16进制表示为0x0061.
以下5种赋值方式是等价的,字符用单引号‘,字符串使用双引号“。
char c = 'a';
char c = '\u0061'; //设定"a"的十六进制数据的Unicode字符编码,由此可 i看出unicode编码通常也就是16进制的,也就是2个字节。
char c = 0x0061; //设定"a"的十六进制数据的Unicode字符编码 0x开头的数字位16进制
char c = 97; //设定"a"的十进制数据的Unicode字符编码
char c = 0141; //设定"a"的八进制数据的Unicode字符编码0开头的数字位16进制
//其他一些例子:
char a1 = 'a'; //一个字母
char a2 = '中'; //一个中文字符
char a3 = '\u0060' //unicode编码
3.2.4.3 转义字符串
Java编程人员在给字符变量赋值时,通常直接从键盘输入特定的字符,而不会使用Unicode字符编码,因为很难记住各种字符的Unicode字符编码值。
(因为一个Unicode编码值都是以数字来表识表示某个特定字符,而我们在定义的时候通常为 char a=’a’,而不会char a=a的unicode编码,因为后者会比较多繁琐)。
对于有些特殊字符,比如单引号,如不知道它的Unicode字符编码,直接从键盘输入编译错误:
char c = '''; //编码出错
为了解决这个问题,可采用转义字符来表示单引号和其他特殊字符,例如:
char c = '\''; //编码成功
char c = '\\';
上方的反斜杠通常被人们认为是转义字符。
转义字符以反斜杠开头,常用转义字符:
\n 换行符,将光标定位到下一行的开头;
\t 垂直制表符,将光标移到下一个制表符的位置;
\\ 反斜杠字符
\' 单引号字符
\" 双引号字符
3.3 其他注意事项
3.3.1 变量的申明和赋值
变量的存在意义,因为程序内的数值必须需要变化。程序需要变得更具有通用性。为此,便需要引入变量和参数的概念。
- 程序的基本功能是处理数据
- 程序用变量来表示数据;
-
程序中必须先定义变量才能使用;
定义变量是指设定变量的数据类型和变量的名字,定义变量的基本语法为:
数据类型 变量名;
Java语言要求变量遵循先定义,再初始化,然后使用的规则。变量的初始化是指自从变量定义以后,首次给它赋初始值的过程。
具体流程为 定义-> 初始化 ->使用。为什么需要这样呢。因为,在创建变量的时候,系统会分配空间,而空间内的数据都是未知的,如果不先进行初始化,那么你可能在进行变量计算的时候是使用未知的变量进行操作,得到的结果可能也是未知的。当然,你也可以在创建变量的同时进行初始化。
例:int a; //定义变量a
a = 1; //初始化变量a
a++; //使用变量a
int b=a; //定义变量b, 初始化变量b(使用变量a的值);
b++; //使用变量b
3.3.2 基本数据类型转换
在基本数据类型的转换过程中,一般从低字节的数据类型向高字节的数据类型进行转换可以自动转换,也叫隐式转换;从高字节向低字节进行转换,会发生数据的截断,造成不可预估的效果。所以常需要进行强制转化,也叫显式转换。
例如:
隐式转换:(不需要我们做什么,JVM自动转换)
byte a = 10;
int b = a;
显示转换:(需要我们手动写上转换的类型)
int a1 = 10;
byte b1 =(byte)a1;
byte a = 1;
byte b = 2;
int c = a+b; //隐式转换
byte c2 = a+b;
float a = 8.9f;
double b = a; //隐式转换
float a; 变量的声明
float a = 8.9f; 变量的声明并且赋值
double b = 10 - a; //隐式转换
double a = 8.9;
double b = 10 - a;
报错:
double a = 8.9;
float b = 10 - a; // 可写为 float b=(double)(10-a);
3.3.3 推荐命名规则
- 类名通常以大写字母开头,例如:Student、ClassRoom;
- 接口通常以大写字母开头,例如:StudentImpl、ClassRoomImpl;
- 方法名通常是以小写字母开头,例如:say、go、doSomething;
- 变量名称以小写字母开头,例如:name、age、myName、myAge;
- 常量名称全部大写,多个单词以’ _ ‘隔开,例如: MY_NAME、FILE_TYPE。