java基础学习day07

java基础学习day07

2019年7月6日;

稍微有些乱,日后再陆续整理,主要参义方法,与理解代码意思,代码复制后知否能运行不是最重要的;

面向对象的引入

实质就是一种变成范式(就是一种套路–一类问题的解决方案)

先说面向过程,面向过程就是注重每个动作的代码细节实现;

例如把大象装冰箱 打开冰箱门,把大象装冰箱,再关门;这就是面向过程

面向过程的特点:就是关注代码细节;代码复用性问题
//////////////////////////////////////////////////////////////////////
面向对象则是,有人做装大象这件事,你只要告诉这个人,这个人就会帮你装

而这个人也是重复上述步骤;

而这种方式就是面向对象,以此类比万物皆对象

面向对象:先把过程的代码实现细节整合到对象中,只要找到这个对象就能

拿到这个对象身上的功能,面向对象基于面向过程;

面向对象是否优于面向过程呢?如果长江比较简单,优先使用面向过程,如果场景

比较复杂就优先使用面向对象;

----------------------------------
类和对象之间的关系

对一类对象进行抽取,对共有的特征抽取成属性,将共有的行为抽取成

方法,这一类对象就抽取成了类-----而类就是对象的概括;

人		class person{
姓名 		
性别		String name;
吃饭		char gender
睡觉		int age;
		eat();sleep();

将对象抽象成一个类,抽取成一段描述,

public class ibject{public static void main(String[] args){

创建person对象

调用的是构造方法---用于创建对讲

创建对象是由调用构造方法来完成的;

【构造方法–无参构造 public person(){}与类同名,

没有返回值类型(没有void) 两点同时符合时才是构造方法;

如果类中没有手动添加构造方法,jvm会在底层默认添加一个无参构造

如果类中定义了构造方法,jvm就不会添加一个无参构造

构造方法可以重载,可以对对象的属性可以初始化 】

person p = new person();

p.age=10; 给对象的属性 age 赋值10;

方法有就近原则

有参构造: public person(St15:50 2019/7/6ring name){

name = name; 方法中name直接找到name,则输出null;
改为 this.name = name 则会正常赋值;

【在java中所有的非静态属性以及方法都可以通过对象调用】
不加static的属性就是非静态属性

	} 

}
person类
class person{
属性
String name

char gender

int age

类中写方法不写static,如果想让main方法调用,就加static

方法:public void eta(){name+ 吃 }

  public void sleep(){name+睡}


【public static void m(person p){

p.age=10;

如果在main方法中再次调用 m 方法,则方法传入的是一个对象;

对象的地址值找到原堆内存改变了元素,会影响原堆内存。】

}

}
}
}

演示:

class Student{

String name;

int age;

char gender;

public Studen(){

System.out.println(“this:”+this);
}
public Student(String){}

public void study(){

【this】就代表当前类的对象;this就可以指代还没有创建的对象;

System.out.println(this.name+“在学习”);
System.out.println(“this:”+this); }
}

创建Student对象

Student s = new Student();

Student s1 = new Student();

System.out.print(“s1”+s1);

this----关键字

用于代表当前类的对象,this可以指代还没有创建的对象,

也可指代刚创建出的对象,也可指代正在使用的对象,是一个灵活的指代,

指代就是正在使用的对象—也是虚拟的指代,因为并没有开辟空间

public Student(String name){

this.name = name;
}

public Student(String name,int age){

 如果使用Student(name)则调不到方法

 【调用已经有的方法;使用this(name);】

this语句---格式 this(参数)

this语句只能在本类构造方法中调用其他形式的构造方法;

this语句只能在第一行调用

this.age=age

}

演示:
class baby{
属性
String name;
char gender;
int age;
构造方法代表----生产方式;
public baby(){
this.name =“xxx”
this.gender=“xx”
this.age=1;
}
public babay(String name){
this.name =“xxx”
this.gender=“xx”
this.age=1;
}
public baby(String name,int age){
this.name =“xxx”
this.gender=“xx”
this.age=1;

}

方法---行为
public void cry(){

System.out.println("cry");}

}

构造代码块

类内外方法{}---构造代码块

构造代码块格式 { 方法 } 与创建对象有关,构造代码块中的内容

优先所有的构造方法先执行;与位置无关;

也可以对属性进行初始化

只要创建对象无论调用任何形式的构造方法都会先执行构造代码块

{ this.name =“xxx”
this.gender=“xx”
this.age=1; }

局部代码块
也叫做方法代码块,用于控制变量的生命周期;

提高内存利用率;

public static void main(String[] args){


int j =2;

局部代码块:{int i = 1;

System.out.println(i+j);}

可以控制变量的生命周期;

直接创建的对象,称为匿名对象:

new baby().age;

可以给属性进行赋值取值;

匿名对象的使用场景:

只能使用一次,当做参数传递的时候

位置、

局部变量与成员变量的区别

局部变量:方法内或者代码(非静态)里;

成员变量:方法外,类内

2、作用范围

两个位置不一样,作用范围不一样

3、内存位置

成员变量在堆内存

局部变量在栈内存

4、声明周期

局部变量:当方法执行或者执行代码块而创建;方法或者代码块执行完毕

就随之消除;

成员变量:随着对象的创建而产生的,随着对象变为无用对象被回收时,就销毁;

猜你喜欢

转载自blog.csdn.net/qq_31783363/article/details/94884285
今日推荐