面向对象是基于面向过程的。
面向过程------面向对象(三大特征:继承封装多态)
懒一点。从执行者变为指挥者,只需要找到具备指定功能的对象,通过调用这个对象来实现功能。
创建类:关键字 class
语法:访问修饰符 class 类名{//public 公共的
//成员变量(属性)
//成员方法(函数)
}
类名.java文件都是源文件,可以定义class(一个或者多个),但是只能有一个public ,被public修饰的类的类名必须和源文件的文件名称相同。
想要运行类,需要使用main方法,main方法是程序的入口
成员变量(属性):
语法:访问修饰符(public) 数据类型 变量名称= 值;
成员方法(函数):
语法:访问修饰符 返回类型 方法名称(数据类型 参数名称1,数据类型 参数名称2,.......){
//方法体;
Return ;
}
Void:该方法不需要返回值,返回值为空
Return:必须和返回类型对应,也就是返回值和返回类型需要匹配。方法进行到return进会终止,不会往下执行。
形式参数:方法需要传参,进行参与运算的未知变量
算数运算中,在算数符号左右两边出现long、double/float的时候,全部按照long、double/float来进行。如果是byte/short/则返回int的结果
对象
创建对象(new)
语法:类名 对象的名称 = new 构造方法();
访问:
成员属性:对象的名称.属性名称
成员方法:对象的名称.方法名称
对象的内存划分
方法的重载;一个类中可以(允许)出现一个以上的同名方法,但是必须保证参数类型不同
JVM虚拟机结构划分图
Class Files :源文件编译以后的class文件
Class Loader: 类加载器,负责将类中的信息加载到指定的内存空间中
Execution Engine :执行引擎,负责调用和执行程序
JNI:
Stack:栈,存储方法中产生的局部变量和对象、数组的引用,执行方法时,方法的参数列表;
Heap:存储在运行时,产生的对象和数组的实例(实际内存空间)
Method Area;方法区,存放有类加载器加载的信息,比如:类名,方法名,属性,静态变量 等等
构造方法(构造器):
用来构造对象的方法,是一种特殊的方法,这个方法只有一种功能,就是构造对象。
特点:1.构造方法没有返回值。
2.构造方法的名称必须和类名称一致
3.不能在构造方法中写return;
当没有写构造方法的时候,系统会自动给创建一个空的构造方法。
当自己写了有参构造方法的时候,系统就不会给创建空的构造方法了。
类的结构:
访问修饰符 class 类名称{
属性1;
属性2;
。。。
方法1(){};
方法2(){};
}
public class Day04_01{
public float add(float a,float b){// byte +byte = int ;short + short = int ;int + int = int
return a+b;
}
public int add(byte a){
return a;
}
public static void main(String[] args){
Day04_01 day04_01 = new Day04_01();
byte b1 = 1;
byte b2 = 2;
float f1 = 1f;
float f2 = 2f;
int a = day04_01.add(b1);
float b = day04_01.add(f1,f2);
System.out.print(a+".........."+b);
}
/*
public short add(short a,short b){
return a+b;
}
public static void main(String[] args){
Person person = new Person();
short b1 = 1;
short b2 = 2;
short a = person.add(b1,b2);
System.out.print(a);
}
*/
}
public class Person{//实体类 一类,对于现实社会中的实物进行抽象的描述
//属性:对象的性质
public String name ;
public int age ;
public Person(){//空的构造方法(无参构造方法)
System.out.println("空的构造方法");
}
public Person(String n,int age){//带参的构造方法
name = n;
age = age;
}
public Person(String n){//带参的构造方法
name = n;
}
//方法:对象的功能
public int eat(){
System.out.println("吃着");
return 0;
}
public boolean sleep(boolean isEat){
if(isEat){
System.out.println("睡着");
return true;
//System.out.println("123");
}else{
return false;
}
}
public void play(){
System.out.println("玩着");
}
public static void main(String[] args){
String str = new String();
Person person1= new Person();
//person1.name= ;
Person person2 = new Person("ls",12);
System.out.println("person1.name:"+person1.name);
Person person3 = new Person("ls");
System.out.println("person3.name :"+ person3.name );
//Person person2= new Person();
/*
int a = 10;
int b = a;
int c = 10;
a = 20;
eat();
Person person1 = new Person();
//person1.name = "zs";
Person person2 = person1;
//person2.age = 15;
System.out.println("person2.name:"+person2.name);
System.out.println("person1.age:"+person1.age);
Person Person3 = new Person();
int[] arr = new int[5];
String str = "";
*/
/*Person person = new Person();
person.name = "zs";
person.age = 100;
person.play();
Person person1= new Person();
person.name = "ls";
person.age = 99;
//int eat = person.eat();
System.out.println("...."+ person.name+"......age:"+person.age );*/
}
}