一.注释

  接下来我们将的内容可能比较琐碎。但是都是基础,就如同盖房子我们需要的砖块一样,之后讲控制语句,控制语句就像黏土一样,讲砖块连接起来。

  为了方便程序的阅读,Java语言允许程序员在程序中写上一些说明性的文字,用来提高程序的可读性,这些文字性的说明就称为注释。写注释提高我们程序员之间相互协作的效率,所以我们要在每一个类,每一个方法上面写上注释, 注释不会出现在字节码文件中,即Java编译器编译时会跳过注释语句。 在Java中根据注释的功能不同,主要分为单行注释、多行注释和文档注释

  • 单行注释: 使用“//”开头,“//”后面的单行内容均为注释。
  • 多行注释: 以“/”开头以“/”结尾,在“/”和“/”之间的内容为注释,我们也可以使用多行注释作为行内注释。但是在使用时要注意,多行注释不能嵌套使用。有个小技巧,我们可以用多行注释来做行内注释。
  • 文档注释: 以“/**”开头以“*/”结尾,注释中包含一些说明性的文字及一些JavaDoc标签(后期写项目时,可以生成项目的API)

例子:

/**
 * Welcome类(我是文档注释)
 * @author 赵
 * @version 1.0
 */
public class Welcome {
    //我是单行注释
    public static void main(String[] args/*我是行内注释 */) {
        System.out.println("Hello World!");
    }
    /*
       我是多行注释!
       我是多行注释!
     */
}



二.标识符

标识符的作用:标识符是用来给变量、类、方法以及包进行命名的,如Welcome、main、System、age、name、gender等。


标识符需要遵守一定的规则:

  • 标识符必须以字母、下划线_、美元符号$开头。
  • 标识符其它部分可以是字母、下划线“_”、美元符“$”和数字的任意组合。
  • Java 标识符大小写敏感,且长度无限制。
  • 标识符不可以是Java的关键字。

标识符的使用规范:

  • 表示类名的标识符:每个单词的首字母大写,如Man, GoodMan
  • 表示方法和变量的标识符:第一个单词小写,从第二个单词开始首字母大写,我们称之为“驼峰原则”,如eat(), eatFood()

  【注意】:Java不采用通常语言使用的ASCII字符集,而是采用Unicode这样标准的国际字符集。因此,这里字母的含义不仅仅是英文,还包括汉字等等。但是不建议大家使用汉字来定义标识符!

题外篇:
  1.ASCII字符集
  我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。
  上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为 ASCII 码,一直沿用至今。
  ASCII 码一共规定了128个字符的编码,比如空格SPACE是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的一位统一规定为0。

  2.非ASCII编码
  英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号。至于亚洲国家的文字,使用的符号就更多了,汉字就多达10万左右。一个字节只能表示256种符号,肯定是不够的,就必须使用多个字节表达一个符号。比如,简体中文常见的编码方式是 GB2312,使用两个字节表示一个汉字,所以理论上最多可以表示 256 x 256 = 65536 个符号。

  3.Unicode
  世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样。
  可以想象,如果有一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是 Unicode,就像它的名字都表示的,这是一种所有符号的编码。UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式。其他实现方式还包括 UTF-16(字符用两个字节或四个字节表示)和 UTF-32(字符用四个字节表示),不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8 是 Unicode 的实现方式之一。
题外话结束。

合法的标识符
int a = 3;
int _123 = 3;
int $12aa = 3;
int 变量1 = 55; //合法,但是不建议使用中文命名的标识符

三.Java关键字/保留字

关键字这块大家只需要看一遍就行,不用背。

abstract assert boolean break byte case catch char class
const continue default do double else extends final finally
float for default goto if import instanceof int interface
long native new null package private protected public return
short static strictfp super switch synchronized this throw throws
transient try void volatile while

四.变量

初识变量:
  变量本质上就是代表一个”可操作的存储空间”,空间位置是确定的,但是里面放置什么值不确定。我们可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。
  Java是一种强类型语言,每个变量都必须声明其数据类型。变量的数据类型决定了变量占据存储空间的大小。 比如,int a=3; 表示a变量的空间大小为4个字节。
  变量作为程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储空间。

格式为:

type  varName [=value][,varName[=value]...]; 
//[]中的内容为可选项,即可有可无
数据类型  变量名  [=初始值] [,变量名  [=初始值]…];

double  salary;
long  earthPopulation;
int  age;

2.1.数据类型

变量分类:
局部变量(local variable)/实例变量
  方法或语句块内部定义的变量。生命周期是从声明位置开始到到方法或语句块执行完毕为止。局部变量在使用前必须先声明、初始化(赋初值)再使用。

public void test() {
	{/ / 语句块 开始
		int a=1;
		System.out.print(a);
	} // 语句块 结束

   int i;
   int j = i+5 ; // 编译出错,变量i还未被初始化 
} 
  
public void test() {
   int i;
   i=10;
   int j = i+5 ; // 编译正确
}

成员变量(也叫实例变量 member variable)
  方法外部、类的内部定义的变量。从属于对象,生命周期伴随对象始终。如果不自行初始化,它会自动初始化成该类型的默认初始值。(而局部变量需要初始化)

数据类型 初始值
int 0
double 0.0
boolean false

静态变量(类变量 static variable)
  使用static定义。 从属于类,生命周期伴随类始终,从类加载到卸载。 (注:讲完内存分析后我们再深入!先放一放这个概念!)如果不自行初始化,与成员变量相同会自动初始化成该类型的默认初始值。

/**
 * 测试变量
 * 
 * @author 赵
 *
 */
public class TestVariable {
    int a;                    //成员变量, 从属于对象; 成员变量会自动被初始化
    static  int  size;   //静态变量,从属于类
     
    public static void main(String[] args) {
        {
            int age;        //局部变量,从属于语句块;
            age = 18;
        }
         
        int salary = 3000;    //局部变量,从属于方法
 
        int gao = 13;
        System.out.println(gao);
 
        int i;
        // int j = i + 5; // 编译出错,变量i还未被初始化
    }
}

五.常量(Constant)

  常量通常指的是一个固定的值,在Java语言中,主要是利用关键字final来定义一个常量。 常量一旦被初始化后不能再更改其值。

声明格式为:

final  type  varName = value;

变量和常量命名规范(不规范会直接损害你的个人形象)

  1. 所有变量、方法、类名:见名知意
  2. 类成员变量:首字母小写和驼峰原则: monthSalary
  3. 局部变量:首字母小写和驼峰原则
  4. 常量:大写字母和下划线:MAX_VALUE
  5. 类名:首字母大写和驼峰原则: Man, GoodMan
  6. 方法名:首字母小写和驼峰原则: run(), runRun()

六.基本数据类型

  Java是一种强类型语言,每个变量都必须声明其数据类型。 Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。
2.1.数据类型

引用数据类型的大小统一为4个字节,记录的是其引用对象的地址!

6.1整数类型:

类型 占用存储空间 表数范围
byte 1字节 -2^7 ~ 2^7-1(-128~127)
short 2字节 -2^15 ~ 2^15-1 (-32768~32767)约3万
int 4字节 -2^31 ~ 2^31-1 (-2147483648~2147483647) 约21亿
long 8字节 -2^63 ~ 2^63-1

Java 语言整型常量的四种表示形式

  1. 十进制整数,如:99, -500, 0(默认)
  2. 八进制整数,要求以 0 开头,如:015
  3. 十六进制数,要求 0x 或 0X 开头,如:0x15
  4. 二进制数,要求0b或0B开头,如:0b01110011
    Java语言的整型常数默认为int型,声明long型常量可以后加‘ l ’或‘ L ’ 。
long a = 55555555;  //编译成功,在int表示的范围内(21亿内)。
long b = 55555555555;//不加L编译错误,已经超过int表示的范围。

6.2浮点类型:
  带小数的数据在Java中称为浮点型。浮点型可分为float类型和double类型。
  float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。而double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。浮点型常量默认类型也是double。
  float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。也可以在浮点数值后添加后缀D或者d, 以明确其为double类型。
  浮点类型float,double的数据不适合在不容许舍入误差的金融计算领域。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal, BigInteger类。

 float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);//结果为false

float d1 = 423432423f;
float d2 = d1+1;
if(d1==d2){
   System.out.println("d1==d2");//输出结果为d1==d2
}else{
    System.out.println("d1!=d2");
}

6.3字符类型:
  字符型在内存中占2个字节,在Java中使用单引号来表示字符常量。例如’A’是一个字符,它与”A”是不同的,”A”表示含有一个字符的字符串。
  char 类型用来表示在Unicode编码表中的字符。Unicode编码被设计用来处理各种语言的文字,它占2个字节,可允许有65536个字符。

char eChar = 'a'; 
char cChar ='中';

Unicode具有从0到65535之间的编码,他们通常用从’\u0000’到’\uFFFF’之间的十六进制值来表示(前缀为u表示Unicode)

char c = '\u0061';

Java 语言中还允许使用转义字符 ‘\’ 来将其后的字符转变为其它的含义。常用的转义字符及其含义和Unicode值如表2-6所示。

转义符 含义 Unicode值
\b 退格(backspace) \u0008
\n 换行 \u000a
\r 回车 \u000d
\t 制表符(tab) \u0009

6.4 boolean类型
boolean类型有两个常量值,true和false,在内存中占一位(不是一个字节),不可以使用 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。 boolean 类型用来判断逻辑条件,一般用于程序流程控制 。

请不要这样写:if ( flag == true ),只有新手才那么写。

相关文章: