一.注释
1.单行注释
int age;//定义int型变量用于保存年龄信息
2.多行注释
/*
123
456
789
*/
3.文档注释
/**
@
@
@
*/
二.标识符与关键字
1.标识符
标识符可以简单地理解为一个名字,用来标识类名、变量名、方法名、数组名、文件名的有效字符序列。
Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
关于 Java 标识符,有以下几点需要注意:
- 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
- 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
- 关键字不能用作标识符
- 标识符是大小写敏感的
- 合法标识符举例:age、$salary、_value、__1_value
- 非法标识符举例:123abc、-salary
标识符是大小写敏感的
合法标识符如:
name
user_age
$page
非法标识符如:
4word
String
User name
2.关键字
关键字是Java语言中已经被赋予特定意义的一些单词,不可以把这些字作为标识符来使用。
3.Java修饰符
像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:
访问控制修饰符 : default, public , protected, private
非访问控制修饰符 : final, abstract, static, synchronized
在后面的章节中我们会深入讨论 Java 修饰符。
三.数据类型
Java为强类型语言。
强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。
1.基本数据类型
1.数值类型
1.整数类型
2.常见进制
十进制:120,0,-127
不能以0为十进制数的开头
八进制:0123(十进制83),-0123(十进制-83)
八进制必须以0开头
十六进制:如0x25 (十进制数37)、0Xb0le (十进制数45086)。
十六进制必须以0X或0x开头。
3.浮点类型
1.浮点数数据类型
在默认情况下,小数都被看作double型,若使用float型小数,则需要在小数后面添加F或f。可
以使用后缀d或D来明确表明这是一个double类型数据,不加d不会出错,但声明float型变量时如果不加f,系统会默认为变量是double类型而出错。
3.字符类型
1.char类型
字符类型(char) 用于存储单个字符,占用16位(两个字节)的内存空间。
在定义字符型变量时,以单引号表示,如’s’表示一个字符,而”s”则表示一个字符串,虽然只有一个字符,但由于使用双引号,它仍然表示字符串,而不是字符。
char x='a';
2.转义字符
转义字符是一一种特殊的字符变量,它以反斜杠“\”开头,后跟一个或多个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”。
2.布尔类型
通过关键字boolean来定义布尔类型变量,只有true和false两个值,占用1位的内存空间。
boolean b; //定义布尔型变量 b
boolean b1 ,b2; //定义布尔型变量 b1、b2
boolean b = true;//定义布尔型变量 b,并赋给初值true
2.引用类型
1.类
2.接口
3.数组
四.数据类型转换
1.自动转换
从低级类型向高级类型的转换,系统将自动执行。这种类型的转换称为隐式转换(自动转换)。下列基本数据类型会涉及数据转换,不包括逻辑类型和字符类型。
这些类型按精度从低到高排列的顺序为
byte
2.强制转换
当把高精度的变量的值赋给低精度的变量时,必须使用显式类型转换运算(又称强制类型转换)。
使用语法如下:
int a=(int)45.23 //此时输出的a值为45
当执行显式类型转换时可能会导致精度损失。只要是boolean类型以外其他基本类型之间的转换,全部都能以显式类型转换的方法达到。
注意点: 1.不能对布尔值进行转换 2.不能把对象类型转换为不相干的类型 3.再把高容量转换到低容量的时候,强制转换 4.转换的时候可能存在内存溢出,或者精度问题! 5.操作数较大时,注意溢出问题 6.数字之间可以用下划线分隔,不影响输出结果
五.变量/常量及其作用域
1.变量
1.定义
变量是Java程序中基本的存储单元。 变量由标识符,类型和可选的初始化程序的组合定义。 此外,所有变量都有一个范围,该范围定义了它们的可见性和生存期。
Java是一种强类型语言,每个变量都必须声明其类型,然后才能使用它们。
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
type varName [=value][{,varName[=value]}]
//数据类型 变量名 =值;可以使用逗号隔开来声明多个变量的值。
注意事项: 1.每个变量都有类型,类型可以是基本类型,也可以是引用类型。 2.变量名必须是合法的标识符。 3.变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
2.变量的分类及作用域
public class Variable{
static int allClicks=0;//类变量
String str="hello world"; // 实例变量
public void method(){
int i =0; // 局部变量
}
}
局部变量:局部变量在方法,构造函数或块中声明。必须声明和初始化值。
全局变量/实例变量:实例变量在类中声明,但在方法,构造函数或任何块之外。
实例变量也是通常称为字段或属性的对象变量。 它们被称为对象变量。 每个对象都有其自己的每个变量副本,因此,如果一个对象更改了变量的值,则它不会影响实例变量。
实例变量从属于对象;若不自行进行初始化,则为该类型的默认值(1.布尔型:默认是false 2.除了基本类型,其余的都是null)
class Student
{
String name;
int age;
}
类/静态变量:类变量(也称为静态变量)在类中使用static关键字声明。 静态变量也与final关键字一起用于声明常量。
class Student
{
String name;
int age;
static int collegeCode =1101;
}
3.变量的命名规范
◆所有变量、方法、类名:见名知意
◆类成员变量:首字母小写和驼峰原则: monthSalary
◆局部变量:首字母小写和驼峰原则
◆常量:大写字母和下划线: MAX_VALUE
◆类名:首字母大写和驼峰原则: Man, GoodMan
◆方法名:首字母小写和驼峰原则: run(), runRun()
2.常量
常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
final 常量名=值;
final double PI=3.14;
六.运算符
1.基本运算符
1.赋值运算符
int a=10;//声明int型变量a
int b=5;//声明int型变量b
int c=a+b;//将变量a与b运算后的结果赋值给c
由于赋值运算符“=”处理时会先取得右方表达式处理后的结果,因此一个表达式中若含有两个以上的“=”运算符,会从最右方的“=”开始处理。
2.算术运算符
Java中的算术运算符主要有+ (加)、- (减)、 (乘)、/(除)、% (求余),++(自增),—(自减),它们都是二元运算符。
*注:a++和++a的区别
假设a=4,则:
b= ++a;//先将a的值加1,然后赋给b,此时a值为5,b值为5
b= a++;//先将a的值赋给b,再将a的值变为5,此时a值为5,b值为4
3.关系运算符
4.逻辑运算符
&和&&的区别:
使用逻辑运算符“&”会判断两个表达式,而逻辑运算符“&&”则是针对boolean类型的类进行判断,当第一个表达式为false时则不去判断第二个表达式,直接输出结果从而节省计算机判断的次数。
通常将这种在逻辑表达式中从左端的表达式可推断出整个表达式的值称为“短路”,而那些始终执行逻辑运算符两边的表达式称为“非短路”。“&&”属于“短路”运算符,而“&”则属于“非短路”运算符。
5.位运算符
1.“按位与”运算
“按位与”运算的运算符为“&”,为双目运算符。“按位与”运算的运算法则是:如果两个整型数据a、b对应位都是1,则结果位才是1,否则为0。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。
2.“按位或”运算
“按位或”运算的运算符为“|”,为双目运算符。“按位或”运算的运算法则是:如果两个操作数对应位都是0,则结果位才是0,否则为1。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。
3.“按位取反”运算
“按位取反”运算也称“按位非”运算,运算符为“~”, 为单目运算符。“按位取反”就是将操作数二进制中的1修改为0,0修改为1。
4.“按位异或”运算
“按位异或”运算的运算符是“人”,为双目运算符。“按位异或”运算的运算法则是:当两个操作数的二进制表示相同(同时为0或同时为1)时,结果为0,否则为1。若两个操作数的精度不同,则结果数的精度与精度高的操作数相同。
5.移位操作
除了上述运算符之外,还可以对数据按二进制位进行移位操作。Java中的移位运算符有以下3种。
<<: 左移。
>>: 右移。
>>>:无符号右移。
左移就是将运算符左边的操作数的二进制数据按照运算符右边操作数指定的位数向左移动,右边
移空的部分补0。右移则复杂-些。当使用“>>”符号时,如果最高位是0,右移空的位就填入0;如
果最高位是1,右移空的位就填入1。
Java还提供了无符号右移”>>> “无论最高位是0还是1,左侧被移空的高位都填入0。
6.条件运算符
条件式?值1:值2
三元运算符的运算规则为:若条件式的值为true,则整个表达式取值1,否则取值2。例如:
boolean b = 20<45?true:false;
7.扩展赋值运算符
2.运算符优先级
通常优先级由高到低的顺序依次是:
1.增量和减量运算。
2.算术运算。
3.比较运算。
4.逻辑运算。
5.赋值运算。
如果两个运算有相同的优先级,那么左边的表达式要比右边的表达式先被处理。下表显示了在Java中众多运算符特定的优先级。
七.包机制
为了更好地组织类, Java 提供了包机制,用于区别类名的命名空间。
包语句的语法格式为:
package pkg1[. pkg2[. pk..]];
一般利用公司域名倒置作为包名;
为了能够使用某-个包的成员, 我们需要在Java程序中明确导入该包。使用”import”完成此功能。
import package1[.package...].(classname|*);