3.Java值传递与引用传递

目录
1.Java面向对象
2.Java构造器
3.Java值传递与引用传递
4.Java封装
关于关键字小结
5.Java继承
6.Java继承之super与this
7.Java方法重写
8.Java多态
9.和类型转换
10.Java类型转换
11.关键字详解
1)静态属性
2)静态方法
3)代码块
4)拓展,静态导入包
12.抽象类
13.接口的定义与实现
接口和抽象类有什么区别?
14.Java内部类
15.Error和
16.自定义异常总结
1.Java面向对象
面向过程思想
面向对象编程(- ,OOP)
面向对象编程的本质是:以类的方式组织代码,以对象的形式组织(封装)数据 。
对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统 。但是具体到微观操作,仍然需要面向过程的思路去处理 。
比如盖一栋大楼,我需要钢筋,混凝土,木材等,先把这些分类好然后去找人做这些事情,然后这些比如粉刷工,钢筋工,木工再去对自己具体分类的问题进行面向过程的微观处理,比如粉刷工要思考用几号油漆,混凝土工要思考用多少沙子,水和石灰进行搅拌等具体的过程处理 。
总结,面向对象相当于一个总体框架,面向过程是一个具体的执行流程 。
三大特性:封装,继承,多态 。
类与对象区别:类是一个模板,是抽象的,对象是一个实例 。狗类是一个抽象的概念,但具体的一条叫旺财的狗是一个对象 。具体某一条狗,就是对象 。单纯说狗这是类,类其实就是类别, 类别关注共同的属性与行为,比如狗的属性:颜色、体重;狗的行为:啃骨头、撒尿 。具体某一条狗是什么颜色、多少体重这就是对象了 。
2.Java构造器
public class Person {/* 一个类即使什么都不写,它也会存在一个方法,即无参构造,用来初始化值,默认为null,如下person.name在没有赋值的情况下为string等引用类型统统默认为null,int默认为0,boolean为false,char为u000 */String name;int age;}---------------------------------------------------------public class Application {public static void main(String[] args) {Person person = new Person();System.out.println(person);//Person@4554617cSystem.out.println(person.name);//null}}
如下调用是没有问题的,但如果使用来调用,就必须显式定义无参,否则报错,如下会报错,也可以理解为重载,new ()没有找到自己对应的那个无参的方法
public class Person {String name;int age;public Person(String name){this.name=name;}}-----------------------------------------------------------public class Application {public static void main(String[] args) {Person person = new Person();//使用new关键字,本质是在调用构造器System.out.println(person);System.out.println(person.name);}}
当然,上面的类里实例化时改为有参就不会报错(类似于重载),即
public class Application {public static void main(String[] args) {Person person = new Person("张三");//但是这种有局限性,平常肯定是new Person()无参调用比较多,System.out.println(person);//Person@4554617cSystem.out.println(person.name);//张三}}
构造器:和类名相同,没有返回值;
作用:new 本质是在调用构造方法,初始化对象的值;
注意点:定义有参构造之后,要想使用= new ();这种无参写法,必须显示定义无参构造,这个就相当于重载的思想 。
3.Java值传递与引用传递
在Java中参数的传递主要有两种:值传递和参数传递 。