类
类是一种由用户定义的新型数据类型,与整型或实型所以也称为构造类数据相
类是一种复杂的数据类型,所以也称为构造类型。
一个类由表示对象状态的属性和对属性数据进行操作本章的方法组成,即类是数据成员与方法成员的封装体。
数据成员
public class test{ //这里是定义一个java类
int i.j; //这里是定义数据成员
int geti(){ //这里是定义方法
return i;
}
public static void main(String args[]){
//这个是java程序的主方法(main()方法)
}
}
数据成员是一个类的核心内容、设计类的主要内容是设计数据成员。同类的对象之所以互不相同。是由于他们有不同的属性值。及数据
数据成员的定义格式
类的数据成员也叫属性成员,或叫字段。在设计类时、 定义数据成员的简单格式为
数据成员类型 数据成员名:
例如
Int sum;
Int sum=0;
数据成员的修饰符
数据成员的类型前面还可以加修饰符,数据成员的修饰符可分为存取性修饰符和存在性修饰符两类存取性修饰符:有 publicl\private\package2
)存在性修饰符:有 static\final
final有“这是无法改变的”或者“终态的”含义,它可以修饰
非抽象类、非抽象类成员方法和变量
final成员变量表示常量,只能被赋值一次,赋值后值不再改变
final不能用于修饰构造方法
注意:被final修饰的数据成员在定义时,一定要同时赋初值,
不能在程序的其他地方进行修改。否则会出现编译错误。如己
有「的声明“ final float PI:”,然后在程序的其他地方有赋
句PI=3.12,这是不允许的的
final float PI=3.140
但可以初始化メ对象的时候再赋初值
final修饰的变量有三种:静态变量、实例变量和局部变量,
分别表示三种类型的常量
一、实例变量
也叫对象变量、类成员变量;从属于类由类生成对象时,才分配存储空间,各对象间的实例变量互不干扰,能通过对象的引用来访问实例变量。但在Java多线程中,实例变量是多个线程共享资源,要注意同步访问时可能出现的问题。
<span style="font-size:14px;">public class Demo {
//以下都是实例变量(成员变量、对象变量)
private String nameString;
public int age;
protected int priority;
//实例方法
public String getNameString(){
return this.nameString;
}
}</span>
二、类变量
也叫静态变量,是一种比较特殊的实例变量,用static关键字修饰;一个类的静态变量,所有由这类生成的对象都共用这个类变量,类装载时就分配存储空间。一个对象修改了变量,则所以对象中这个变量的值都会发生改变。
<span style="font-size:14px;">public class Demo {
//类变量(静态变量)
public static int a = 0;
//实例变量
private String nameString;
}</span>
方法
在一个类中,程序的作用体现在方法中。方法是JAVA创建一个有名字的子程序的方法。
1、方法的实现包括两部分内容:方法声明和方法体。
[public | protected | private ] [static]
[final | abstract] [native] [synchronized]
returnType methodName([paramList])
[throws exceptionList] //方法声明
{statements} //方法体
——方法体是对方法的实现,它包括局部变量的声明以及所有合法的Java指令。方法体中声明的局部变量的作用域在该方法内部。若局部变量与类的成员变量同名,则类的成员变量被隐藏。
—— 方法声明中的限定词的含义:
static: 类方法,可通过类名直接调用
abstract: 抽象方法,没有方法体
final: 指最后一个方法
方法声明包括方法名、返回类型和外部参数。其中参数的类型可以是简单数据类型,也可以是复合数据类型(又称引用数据类型)。
对于简单数据类型来说,java实现的是值传递,方法接收参数的值,但不能改变这些参数的值。如果要改变参数的值,则用引用数据类型,因为引用数据类型传递给方法的是数据在内存中的地址,方法中对数据的操作可以改变数据的值。
Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。8 中类型表示范围如下:
byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。
short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。
int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。
boolean:只有true和false两个取值。
char:16位,存储Unicode码,用单引号赋值。
方法体
public void test(){}
大括号里就是方法体
如果没有{},就没有方法体
有{} 但是里面没内容说明方法体为空,但是有方法体
test是方法名
方法体就是方法的内容
java1.8以后支持方法体里有内容
方法调用
Java支持两种调用方法的方式,根据方法是否返回值来选择。
当程序调用一个方法时,程序的控制权交给了被调用的方法。当被调用方法的返回语句执行或者到达方法体闭括号时候交还控制权给程序。
当方法返回一个值的时候,方法调用通常被当做一个值。例如:
int larger = max(30, 40);
如果方法返回值是void,方法调用一定是一条语句。例如,方法println返回void。下面的调用是个语句:
System.out.println("Welcome to Java!");
类方法和实例方法
类方法是可以通过类直接调用的,也就是静态方法,而实例方法则必须将类实例化后才能调用。
例如Object类中的toString()就是一个实例方法, 它必须在类实例化后才能被调用;
而String的valueOf(...)则是一个类方法,可以直接使用String.valueOf(Object
o)来调用