标识符与关键字
标识符就是一个名称,用来标识JAVA程序中的变量名、类名、成员方法名、接口名等。
关键字又称为保留字,是JAVA语言预先规定的、具有固定含义的一些英文单词。
标识符的命名规则:
(1)不能使用JAVA关键字来作标识符,如int、do、for等
(2)只能由字母、数字、美元符号、下划线这几种字符组成、且第一个字符不能为数字。注意这里的字母也可以包括其他语言的”字母“像汉字的”云“就是一个汉字”字母“
(3)不能是JAVA语言中的某些直接量,如false、true、null
(4)区分大小写
数据类型及直接量、变量
数据类型
基本数据类型:字节(byte)、短整数(short)、整数(int)、长整数(long)、单精度浮点数(float)、双精度浮点数(double)、字符(char)和布尔(boolean)
引用数据类型:类、数组、枚举、接口等类型。
直接量和变量
默认整数直接量是int型、对于长整型直接量要在后面加一个L(l);
默认的实数直接量是double型、对于float型直接量要在后面加一个D(d);
字符型直接量是用单括号引起来的一个字符;
字符串直接量是用双引号引起来的一串字符,是一种引用数据类型;
布尔型直接量只有两个值:true和false;
应用型直接量null表示空的引用值,是引用类型的数据,该引用不指向任何对象。
运算符和表达式
运算符的分类:算术运算符、复制运算符(简单和复合)、逗号运算符、关系运算符、逻辑运算符(条件和逻辑两种。条件有时可以不用执行右边的,所以有时称为短路运算符)、条件运算符、位运算符、其他运算符
JAVA中也是整除,几个类型的数据运算结果也会保存成其中类型最大的数据类型。不过JAVA中的%可以针对浮点数。
运算符存在优先级和结合性
表达式:表达式是由运算符及其操作数组成的。表达式可以简单到只有变量的名字,也可以复杂到……
类型转换:
自动类型转换
1、两种类型是兼容的
2、目标类型高于源类型(谁的字节大)
不满足以上所有条件的不能发生自动转换
ps:整形换成浮点型是可以的,因为任何浮点类型的范围都要比整形的范围大。另外大家都知道char和int是相兼容的。
强制类型转换
当把高精度的变量的值赋给低精度的变量时,通常可以通过执行窄化而被强制转换为另一种类型。强制类型转换的一般语法如下:(目标类型)表达式
ps:有写强制转换是不允许的(例如boolean型不可以强制换转成int型)
控制语句
if语句与if-else语句
ps:这里的if的条件只能是布尔表达式、即运算结果为布尔值的表达式,其值为true或则false。而不能用数字值,这与c/c++不同
switch语句
ps:在JDK7之前,swtich表达式值的类型只能是与整数类型兼容的类型,包括基本类型char、byte、short、int、枚举类型等。在JDK7中增加了一种可以在switch语句中使用的表达式值:字符串类型
for(表达式1;表达式2(布尔表达式);表达式3)
语句或语句块
while(布尔表达式)
语句或语句块
do{
语句或语句块;
}while(布尔表达式);
for-each循环语句
for(类型 变量名:数组名|集合名)
语句或语句块
break和continue语句
break [标号]
continue 【标号】
其中,不带标号的break语句跳出它所在的循环语句或swtich语句;不带标号的continue语句用来结束本次循环,跳过循环体后面尚未执行的语句,截至进行循环条件的判断,以决定是否继续循环。
带标号的break语句跳出标号所指定的语句块,带标号的continue语句结束标号指明的外层循环中本次循环,转而执行标号指明的外层循环的下一次循环
标号的定义 语句标号:语句;
跳转:continue 语句标号
类、对象
在JAVA编程中,并不像现实世界当中那样事先就存在现实的”对象“,而是需要先定义好类,将类作为构造对象的模板或蓝图,再来创建类的实例,即对象。然后调用对象向外界所提供的操作接口,从而完成相应的功能
成员变量:[修饰符]数据类型 变量名或带初始化的变量名列表 ps:数据类型也可以是引用类型
成员方法:[修饰符] 返回类型 方法名称(参数列表){
}
创建对象的一般格式
类名 对象名=new 类名([参数表]);
对象名是一个引用变量,存储的是对象的引用(生成的对象的存储地址)。对象的创建是通过运算符”new“来进行的
使用对象
对象名.成员变量
对象名.方法名称
ps:在一个成员方法中,如果参数列表里没有相同变量名的变量,方法体中的变量就指的是本对象的成员属性。如果有参数列表里同名的话,要使用this.变量名才能指定这是本对象的成员属性
数组的使用(元素类型既可以是基本数据类型,也可以是引用数据类型)
一维数组有两种声明格式:数组元素类型 变量名[]或者数组元素类型[] 变量名
在声明数组变量时方括号力不用指明长度。数组变量的声明仅仅是创建了一个数组对象的引用,要想使用数组对象还必须为它分配内存空间,即创建数组
数组对象的创建
第一种 new 数组元素数据类型[数组元素个数].例如new int[10],这段代码只是创建了具有10个整形数组元素的数组对象。这种并没有赋初值,所以数组会被赋予对应数据类型的默认初始值。例如int的默认初始值为0……
第二种,初始化来创建数组对象。比如:数组元素类型 变量名[]={数组元素1,数组元素2,……,数组元素n}
创建数组对象之后,就可以使用数组了,包括为数组元素赋值,访问数组元素值和获得数组长度。下标都是从0开始的
二维数组
当数组元素的类型是数组类型时,就构成了多维数组。多维数组重最常见的是二维数组。如果一维数组中的每个元素类型都是一个一维数组,那么它就是一个二维数组
二维数组的变量声明
二维数组有两种声明格式:数组元素类型 变量名[][] 或者 数组元素类型[][] 变量名
同样只声明一个二维数组的变量,也只是声明了一个引用变量
二维数组对象的创建
变量名=new 数组元素类型【第一个元素个数】【第二个元素个数】
第二种方式分别为每一维创建数组对象
a=new int[2][];
a[0]=new int[2];
a[1]=new int[3];
可见这种创建方式下,二维数组每一行的数量可以不是一样的
第三种通过赋值的方式
int a[][]={{1,2,3},{4,6}}
字符串处理
在JAVA中,字符串是作为对象来实现的。JAVA提供的标准报JAVA.lang中封装的String类和StringBuffer类就是用于处理字符串的类。String和StrigBuffer这两个类分别用于处理不变字符串和可变字符串。不变字符串是指字符串一旦创建,其内容就不能改变
JAVA中的字符串分为直接量和变量两种。字符串直接量是使用双引号括起来的一串字符,是一个String类的对象。可以使用String类中的各种方法。如果程序中出现了字符串直接量,系统将自动为其创建一个String类的对象。这个创建过程是隐含的。
对于字符串变量,它是一个字符串对象的引用,在使用之前同样要进行声明
声明字符串变量
String 字符串变量名;
创建字符串对象
String s1=new String("Hello Dafanzi");
也可以用字符数组来创建字符串,例如
char chars[]={'a','b','c'};
String s1=new String(chars);
也可以把字符串直接量(隐含创建的字符串对象)赋给变量名
String s1="Hello Dafanzi";
String类中的常用方法
int length();返回当前字符串的字符个数
char charAt(int index);返回字符串中index处位置的字符
boolean equals(String str);比较两个字符串的内容是否相等,区分大小写
boolean equalsIgnoreCase(String str);比较两个字符串的内容是否相等,不区分大小写
String toLowerCase()将当前字符串中所有字符转换为小写形式;
String toUpperCase()将当前自复查un中所有字符转换为大些形式
String substring(int index);截取当前字符串从index开始到末尾的字串
boolean startWith(String str);测试当前字符传是否以str字符串开头的
将当前字符串中的c1字符转换为c2字符
StringBuffer类
StringBuffer对象中处理的是可变字符串
StringBuffer对象的创建可以采用多种方式进行,例如
StringBuffer s=new StringBuffer();
这就创建了一个内容为空的StringBuffer对象。如果需要创建带有内容的StringBuffer对象,则可以采用如下方法
StringBuffer s=new StringBuffer("abc");
StringBuffer类的基本方法是append()和insert()。
ps:字符串常量池中具有相同字符序列的字符串只对应一个实例对象
对象转化为字符串:每个类中都具有toSting方法在把类当作字符转的时候调用(继承自 Object),但默认的的toString方法不够,一般我们都重写它
包
包被用来组织一些列类或接口。使用包可以使类的管理更清晰,更有条理。包可以嵌套使用,一个包可以嵌套多个包,就像一个文件夹内可以含有多个子文件夹一样。JAVA编译器使用文件系统目录来保存包。
包的申明很简单,只要将package语句作为Java程序文件的第一行语句,这样,该文件中所定义的任何类都将属于所指定的包。通常将很多功能相近或者关系密切的类及接口放在同一个包中,以方便管理和使用
import语句
import 包名.* 这种形式使得该包中所有可访问的类都可以在程序中直接用类名来访问
import 包名.类名 这种形式允许在程序中直接用类名来访问包中的某一个具体类。
ps:如果没有用import导入别的包的类,需要用new 包名.类名来使用这个类,在导入两个包后,两个包中有同样的名字的类时使用其中任一个类只能这样使用。
从JDK5.0版本起,import除了导入包之外,还可以导入静态成员。
import static 静态成员
JAVA标准包简介
1、java.lang包:它提供了编写JAVA程序时所需要的最基本的类。例如Object类、Math类、String类、System类等。Object类是除他自身以外的所有其他类的父类.这个类在开发JAVA程序时,系统会自动为程序导入
2、java.applet包:它提供了用来创建Applet的必须类,仅包含少量几个接口和一个Applet类
3、java.awt包:它是用来构建图形用户界面(GUI)的包
4、java.awt.event包:定义了不同类型的事件和处理接口
5、java.io包:提供了输入和输出功能
6、java.util包:提供了一些实用的类。例如,处理时间的Date类
7、java.net包:提供了网络编程的相关类
8、java.sql包:提供了访问和操作数据库的类和接口
Java程序结构
(1)包的声明语句
(2)一些列import语句
(3)类或接口的定义
一个java程序文件中只能有一个public类,该类的名称必须与所在程序文件的文件名相同。java程序文件中的其他类往往是public类的辅助类。经过编译,每个类都生成相应的class文件。