java学习笔记大全
省略讲解java平台安装等,要有c语言基础
开始Java语言学习之旅(●’◡’●)
由字母、下划线、美元符号和数字组成,长度不受限制
1.标识符的第一个字符不能是数字字符。
2.标识符不能是关键字(关键字就是具有特定用途或被赋予特定意义的一些词,且关键字都是小写的 )
3.标识符不能是true、false和null(true、false和null不是关键字)
Java中数据的基本类型按精度从“低”到“高”排列:
byte short char int long float double
规则:
把级别低的变量的值赋给级别高的变量时,系统自动完成转换。
例如:float x=100;
当把级别高的变量的值赋给级别低的变量时,必须使用显示类型转换运算。显示转换的格式:(类型名)要转换的值;
例如:int x=(int)34.89;
当把一个int型常量赋值给一个byte和short型变量时,不可以超出这些变量的取值范围,否则必须进行类型转换运算(将导致精度损失)
例如: byte b=(byte)128;
输入
读取字符串:
next()读取不了空格,以空格作为分隔符
nextline()读取一行可以读取空格,以回车作为分隔符
使用System.out.println()或者System.out.print()输出字符串常量时不可以出现回车
(引用型变量)
(与c不同,java不允许在声明数组中的方括号内指定数组个数)
java采用“数组的数组”声明多维数组。构成二维数组的一维数组不必有相同的长度,在创建二维数组时可以分别指定构成该二维数组的一维数组的长度。
注:和c语言不同的是,Java允许使用int型变量的值指定数组的元素的个数如:
int size =30;
double number[]=new double [size];
(同c语言)
if分支语句
switch开关语句
循环语句
for循环
while循环
do while 循环
跳转语句
continue语句
break语句
面向对象的三个特性
封装,继承,多态
类体内容可以有两种类型的成员:
1.成员变量:通过变量声明定义的变量,称作成员变量或域,用来刻画类创建的对象的属性。
2.方法:方法是类体的重要成员之一。其中的构造方法是具有特殊地位的方法,供类创建对象时使用,用来给出类所创建的对象的初始状态,另一类方法,可以由类所创建的对象调用,对象调用这些方法操作成员变量形成一定的算法,体现对象具有某种功能。
(成员变量的类型可以是Java中的任何一种数据类型,包括前面学习过的基本类型:整型、浮点型、字符型、数组以及后面要学习的对象及接口。)
一般格式为: 类的名字 对象名字;
如: Rect rectangleOne;
声明对象变量rectangleOne后,rectangleOne的内存中还没有存放数据,也就是说该对象还没有“引用”任何实体,我们称这时的rectangleOne是一个空对象。
使用new运算符和类的构造方法为声明的对象分配成员变量,如果类中没有构造方法,系统会调用默认的构造方法(默认的构造方法是无参数的)也可同时创造多个对象。
对象不仅可以操作自己的变量改变状态,而且还拥有了使用创建它的那个类中的方法的能力,对象通过使用这些方法可以产生一定的行为。
通过使用运算符“.”,对象可以实现对自己的变量访问 和方法的调用。
(1)对象操作自己的变量(对象的属性)
对象.变量;
(2)对象调用类中的方法(对象的功能)
对象.方法;
(3)体现封装 当对象调用方法时,方法中出现的成员变量就是指该对象的成员变量。
类变量和实例变量
用关键字static修饰的成员变量称作静态变量或类变量, 而没有使用static修饰的成员变量称作实例变量。
例如,下述A类中,x是实例变量,而y是类变量。
class A {
float x;
static int y;
}
类变量是与类相关联的数据变量,也就是说,类变量是和该类所创建的所有对象相关联的变量,改变其中一个对象的这个类变量就同时改变了其它对象的这个类变量。因此,类变量不仅可以通过某个对象访问也可以直接通过类名访问。
实例变量仅仅是和相应的对象关联的变量,也就是说,不同对象的实例变量互不相同,即分配不同的内存空间,改变其中一个对象的实例变量不会影响其它对象的这个实例变量。实例变量必须通过对象访问。
一个成员变量修饰为final,就是常量,常量的名字习惯用大写字母,例如:
final int MAX;
final修饰的成员变量必须要初始化。对于final修饰的成员变量,对象可以操作使用,但不能做更改操作
类体内容可以有2种类型的成员:成员变量和方法。其中一部分方法称作构造方法,供类创建对象时使用,用来给出类所创建的对象的初始状态。另一部分方法可分为实例方法和类方法,类所创建的对象可以调用这些方法形成一定的算法,体现对象具有某种功能。当对象调用方法时,方法中出现的成员变量就是指分配给该对象的成员变量。对象不可以调用构造方法,构造方法是专门用来创建对象的。
方法的定义包括两部分:方法声明和方法体。一般格式为:
方法声明部分{
方法体的内容
}
最基本的方法声明包括方法名和方法的返回类型,返回类型也简称作方法的类型。如:
float area(){
….
}
如果方法的类型是void类型,方法体中也可以不书写任何语句,就不需要返回类型。
在方法体中声明的变量以及方法的参数称作局部变量,局部变量仅仅在该方法内有效。方法的参数在整个方法内有效,方法内定义的局部变量从它定义的位置之后开始有效。(成员变量有默认值,局部变量没有默认值,在使用局部变量前必须有具体值)
类中有一部分方法称作构造方法,类创建对象时需使用构造方法,以便给类所创建的对象一个合理的初始状态。
构造方法是一种特殊方法,它的名字必须与它所在的类的名字完全相同,并且不返回任何数据类型,即它是void型,但void必须省略不写。
Java允许一个类中有若干个构造方法,但这些构造方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。
如果用户在一个定义类中未定义构造方法,系统将为它定义一个缺省的空构造方法。如果用户自己定义构造方法,系统就不再提供默认的。
除构造方法外,其他的方法可分为实例方法或类方法。**方法声明中用关键字static修饰的称作类方法或静态方法,不用static修饰的称作实例方法。**一个类中的方法可以互相调用:实例方法可以调用该类中实例方法或类方法;类方法只能调用该类的类方法,不能调用实例方法;
实例方法可以操作成员变量,无论是实例变量或类变量;而类方法只能操作类变量不能操作实例变量,也就是说类方法中不能有操作实例变量的语句。
(1)实例方法必须通过对象来调用
(2)类方法可以通过类名调用
无论类方法或实例方法,当被调用执行时,方法中的局部变量才被分配内存空间,方法调用完毕,局部变量即刻释放所占的内存。
方法重载是指一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。方法的返回类型和参数的名字不参与比较。如果两个方法的名字相同,即使类型不同,也必须保证参数不同。
方法重载是多态性的一种。所谓功能多态性,是指可以向功能传递不同的消息,以便让对象根据相应的消息来产生一定的行为。对象的功能通过类中的方法来体现,那么功能的多态性就是方法的重载。
this可以出现在实例方法和构造方法中,但不可以出现在类方法中。
1.在构造方法中使用this
代表使用该构造方法所创建的对象。
2.在实例方法中使用this
代表使用该方法的当前对象。
实例方法可以操作成员变量。当成员变量在实例方法中出现时
默认的格式是: this.成员变量;
意思是当前对象的成员变量
3.实例方法可以调用类的其它方法
调用的默认格式是
this.方法;
4.区分成员变量和局部变量
我们已经知道,成员变量在整个类内有效,局部变量仅在方法内有效。
在方法体中声明的变量以及方法的参数称作局部变量,方法的参数在整个方法内有效,方法内定义的局部变量从它定义的位置之后开始有效。
如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效。
当方法被调用时,如果方法有参数,参数必须要实例化,即参数变量必须有具体的值。在Java中,方法的所有参数都是“传值”的,方法中参数变量的值是调用者指定的值的拷贝。如果向方法的int型参数x传递一个int值,那么参数x得到的值是传递值的拷贝。方法如果改变参数的值,不会影响向参数“传值”的变量的值。
(1)基本数据类型参数的传值
对于基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别。
(2)引用类型参数的传值
Java的引用型数据包括对象、数组以及接口。当参数是引用类型时,“传值”传递的是变量的引用而不是变量所引用的实体。
如果改变参数变量所引用的实体,就会导致原变量的实体发生同样的变化,因为两个引用型变量如果具有同样的引用,就会用同样的实体。但是改变参数的引用不会影响向其传值的变量的引用。
可变参数
在声明方法时不给出参数列表中从某一项开始直至最后一项参数的名字和个数,但是这些参数的类型必须相同。并且最后一个参数必须是方法中的参数列表最后一个参数
可变参数用“…”表示若干个参数
public void g(double a,int...x)//x是方法g的参数列表中的可变参数的“参数代表“
对于可变参数,Java也提供了增强版for语句可以如下遍历参数代表所代表的参数,如
for(int param:x)// for(声明循环变量:参数代表)
{
sum=sum+param;
}
1.包语句
通过关键字package声明包语句。package 语句作为Java源文件的第一条语句,指明该源文件定义的类所在的包。package语句的一般格式为: package 包名;
如果源程序中省略了package语句,源文件中所定义命名的类被隐含地认为是无名包的一部分,即源文件中定义命名的类在同一个包中,但该包没有名字。
包名可以是一个合法的标识符,也可以是若干个标识符加“.”分割而成,
如:
package sunrise;
package sun.com.cn;
2.import 语句
使用import 语句可以引入包中的类。在编写源文件时,除了自己编写类外,我们经常需要使用Java提供的许多类,这些类可能在不同的包中。
使用类库中的类
使用Java提供给我们的类,我们用import语句来引入包中类。在一个Java源程序中可以有多个import语句,它们必须写在package语句(假如有package语句的话)和源文件中类的定义之间。
也可以使用import 语句引入自定义包中的类。
我们也可以对单独的一个类进行编译,生成字节码文件然后供其它类使用。
类创建的对象可以通过“.”运算符访问分配给自己的变量,也可以通过“.”运算符调用类中的实例方法和类方法。
类在定义声明成员变量和方法时,可以用关键字private、protected和public来说明成员变量和方法的访问权限,使得对象访问自己的变量和使用方法受到一定的限制。
需要注意的是,访问权限是指类创建的对象是否可以通过“.”运算符访问分配给自己的变量、是否可以通过“.”运算符调用类中的实例方法和类方法。
而类中的实例方法总是可以操作该类中的实例变量和类变量;类方法总是可以操作该类中的类变量,与访问限制符没有关系。
不用private、public 、protected修饰符的成员变量和方法被称为友好变量和友好方法
访问限制修饰符按照访问权限从高到低的排序顺序是
public , protected, 友好, private。
如果一个类没有明确地声明构造方法,那么public类的默认构造方法是public的,友好类的默认构造方法是友好的。
需要注意的是,如果一个public类定义声明的构造方法中没有public的,那么在另外一个类中使用该类创建对象时,使用的构造方法就不是 public的,创建对象就受到一定的限制。
当某个类在另外一个类中创建对象后,如果不希望该对象直接访问自己的变量(通过"."操作自己的成员变量),就应当将该成员变量访问权限设置为private
面向对象编程提倡对象应该调用方法类改变自己的属性,类应当提供操作数据的方法。如:set,get的方法。
一个类可以把对象作为自己的成员变量,如果用这样的类创建对象,那么该对象中就会有其它对象,也就是说该对象将其他对象作为自己的组成部分,或者说该对象是由几个对象组合而成。
如果程序需要某个类的若干个对象,正确的做法是使用对象数组,即数组的元素是对象,例如:
Integer [] m;
m = new Integer [10];
需要注意的是,上述代码仅仅定义了数组m有10个元素,并且每个元素都是一个Integer类型的对象,但这些对象目前都是空对象,因此在使用数组m中的对象之前,应当创建数组所包含的对象,例如:
m[0] = new Integer (120);
5.子类与继承
6.接口与实现
7.内部类与异常类