本节内容
1.类与对象
2.创建对象
3.对象的内存剖析
4.构造方法
5.方法
一、类与对象
俗话说的好万物皆对象。
这些都是对象
我们知道Java语言是完全面向对象的语言,也就是说,在Java程序中所有的事物都是对象。
程序是模拟现实生活,那么把一个一个现实生活中的实体如何描述到程序中,在程序中一个对象就是生活中的一个实体。
对象:在程序中如何描述一个实体:通过实体的特征与行为来描述这个实体。
在Java中我们不能直接描述一个实体,那么如何做呢?。。。。。。。。。
Java中有一个概念:类
类:类是对对象的一种抽象描述,也就是说,类其实就是定义对象的一个模板,在这个模板里面充分描述了对象所具有的属性和行为(方法)
也可以说类是一组具有相同属性与行为的对象的抽象。
对象:通过类具体创建出来的实体,就是对象,这些对象是可以拿来使用的,一个类可以创建出任意个相同的对象(也就是一对多关系)。
所以在我们编写代码时,先要编写类,通过class来创建对象。
创建类的关键词:class
package com.xk; /* *作者:吴志龙 *日期:2018年7月25日 */ public class Person { }
类是用来描述实体的。。。。。
通过什么来描述实体
属性(特征)(成员变量)
方法(行为)
来描述
package com.xk; /* *作者:吴志龙 *日期:2018年7月25日 */ public class Person { //属性 String name; int age; char sex; }
方法来描述实体的行为
package com.xk; /* *作者:吴志龙 *日期:2018年7月25日 */ public class Person { String name; int age; char sex; //吃的行为 public void eat(){ } //睡觉 public void sleep(){ } }
二、创建对象:
使用关键词: new
public static void main(String[] args) { //创建对象 Person person =new Person(); }
Java是链式编程:
通过对象可以使用实体的特征与行为
public static void main(String[] args) { //创建对象 Person person =new Person(); //调用属性 System.out.println(person.name); //调用方法 person.eat(); }
三、内存
Java的内存区域划分:
1.程序计数器:
有了它,字节码解释器才可以知道下一条要执行的字节码指令是哪个。
无论是取下一条指令还是分支、循环、跳转、中断、线程恢复,都需要这个程序计数器。
Java中多线程运行时每个线程都有一个计数器,计数器不能共享。
2.栈区:
存放的是基本数据类型的变量名、以及对象的变量名以及所指向的堆内存的地址。
3.堆区:
用于存放Java对象。
4.方法区:
1、又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量;
2、方法区中包含的都是在程序中永远的唯一的元素
5.本地方法区
,很多的算法或者一个功能的实现,都被java封装到了本地方法中,程序直接通过调用本地的方法就行了,本地方法栈就是用来存放这种方法的,实现该功能的代码可能是C也可能是C++,反正不一定就是java实现的。
四、构造方法
构造方法:是用来创建对象的。
构造方法的语法:访问修饰符 方法名(参数){ }
public Person(){ }
构造方法要与类名相同,无返回类型,在类初始化的时候调用。
五、方法
方法的最大的好处是可以重复使用。
定义:限制条件:在主类中定义,并且由主方法直接调用的方法形式。
方法就是一段可以被重复调用的方法块。在Java中要想进行方法的定义,则可以使用如下的语法完成。
public static 返回类型 方法名称([参数类型 变量, ......]) { 方法体代码; [return [返回值];] }
在定义方法的时候对于方法的返回值有一下的两类:
-
void:没有返回值;
-
数据类型(基本类型,引用类型)。
有参有返回值
public static int add(int x, int y) { //定义方法 return x + y; }
有参无返回值
public static void print(String msg) { //定义方法 System.out.print(msg); }
无参无返回
public static void print() { System.out.println("Hello World!"); //定义方法 }
无参有返回值
public void print(){ return "你好" }
但是在定义方法的时候有一点特别要注意,如果某一个方法上使用了void定义,那么该方法可以直接用return来结束调用。一般而言,这种return的处理往往需要结合if判断来实现。
方法的重载:(重点)
方法重载指的是:方法名称相同,参数的类型和个数不同。
public static int add(int x, int y) { return x + y; } //此时方法名称相同,参数的个数不同 public static int add(int x, int y, int z) { return x + y + z; } public static double add(double x, double y) { return x + y; }
在进行方法重载的时候有一个重要的原则:要求方法的返回值类型一定要相同。