使用new关键字必须要有构造器
默认有一个无参构造 有参覆盖无参
一旦有了有参构造 无参构造必须显式定义
instanceof 二元运算符 判断左边的对象是否为右边的实例 返回布尔类型的数据
可以判断继承中子类的实例是否 为 父类的实现 父子关系
boolean result = object instanceof class
异常
try
catch 捕获
throw 抛出
throws
finally
int a=1;
int b=0;
try{
if(b==0){
throw new ArithmeticException();//主动抛出异常
}
sout(a/b);
}catch (ArithemetucException e){
sout("b!=0");//打印栈信息
}finally{ //处理善后工作
sout("结束了");
}
throws 在方法中执行
如果捕获多个异常 catch 要从小到大
快捷键 选中代码 ctrl + alt + t
自定义异常
public class MyException entends Exception{
//传递数字大于10 异常
}
方法重载overloading mothod:
在同一个类中,方法名相同,参数列表不同,返回值不能作为重载的条件
数组定义的四种方式
一、使用默认的初始值来初始化数组中的每一个元素
语法:数组元素类型 [ ] 数组名= new 数组元素类型 [长度];
int [] scores=new int [3];
二、先声明,然后再赋予的初始值
int [] scores;
scores = new int[3];
三、先声明,然再使用指定的值初始化
int [] scores = new int[]{56,57,58};
四、将第三种方法简化为(使用数组常量给数组进行赋值)
int [] scores ={56,58,52};
数组的遍历
scores.length
一种遍历方法 但是不能控制下标 只能输出 不能控制下标
//forearch循环 JDK1.5之后新增的特性
for (int x:scores){
System.out.println(x);
}
JDK1.5 可变参数
可变参数只能是参数列表中的最后一个
可变参数作为数组使用
public static void main(int... x){
int len=x.length;
for(int i=0;i<len;i++){
System.out.println(x[i]);
}
}
//调用
print2(59,75,65,85,100); //随便传值
数组异常
java.lang.NullPointerException 当一个变量为null是,我们去调用了该变量的属性和方法
java.lang.ArrayIndexOutOfBoundsException 下标越界
数组的内存结构
数组是引用类型,会存放在堆内存中。
面向对象基本概念
面向过程:以步骤为单位,一步一步完成某一一个具体事情 面向对象:以对象为单位,通过调度组合不同的对象来完成某一个事 情
一、什么事面向对象
1、面向对象是一种编程思想
2、面向对象是一种思考问题的思维方式
二、建立面向对象思维方式
1、先整体 再局部
2、先抽象 再具体
3、能做什么,再做什么
三、如何让学习面向对象
1、掌握一门面向对象语言的语法 Java纯面向对象
2、熟悉面向对象的设计原则
3、熟悉面向对象的设计模式 十几种常用的
类和对象
什么是类? 1、类是:分类、类别。 2、通过分类,我们可以区别不同的事物种类,在日常生活当中,我们常常这样做。 3、所以,类是一组具有相同特性(属性)与行为(方法)的事物集合。
类与对象的关系: 1、类表示一个共性的产物,是一个综合的特征,而对象,是-一个个性的产物,是一个个体的特征。 2、类由属性和方法组成: 属性:就相当于一个个的特征 方法:就相当于人的一个个的行为,例如:说话、吃饭、唱歌、睡觉
class 类名称{
属性名称;
返回值 方法名称(){}
}
对象的定义:
一个想要真正的操作,则必须依靠对象,对象的定义格式:
类名称 对象名称 = new 类名称();
如果想要访问类中的属性或方法(方法的定义),以下的格式
访问类中的属性:
对象.属性;
调用类中的方法:
对象.方法();
public class Test1{
}
对象内存分析
当堆内存的对象没有被任何一个栈中的任何引用所指向,那么就会被虚拟机GC垃圾回收程序释放
字符串时引用类型变量,不是基本数据类型变量
类与对象小结
(1) new关键字:表示向内存申请空间,也表示实例化一个对象,创建一个对象。 (2) 一个对象在内存中的大小,由该对象的所有属性所占的内存大小的总和。引用类型变量在32位系统上占4个 字节,在64位系统上占8个字节。加上而外的对象隐性数据所占的大小。 (3)相同的类型才可以赋值 (4)不同的引用,指向同一个对象,任何一个引用改变对象的值,其它引用都会反映出来。 (5)编程时要注意的问题,在确定不使用对象时,要尽早释放对象:引用=null (6)当一个堆中的对象没有被任何引用变量所指向时,该对象会被JVM的GC程序认为是垃圾对象,从而被回收。
封装性
一、 封装性的概念 1、封装性是面向对象思想的三大特征之一。 2、封装就是隐藏实现细节,仅对外提供访问接口。I 封装有: 属性的封装、方法的封装、类的封装、组件的封装、模块化封装、系统级封装... 二、封装的好处 1、模块化 2、信息隐藏 3、代码重用 4、插件化易于调试 5、具有安全性 封装缺点:会影响执行效率
如果没有封装,那么在本类之外创建后,可以直接访问属性
private 关键字:访问权限修饰符, 就是封装,只能在本类中访问
public 表示公有的 ,想要在类外部访问私有属性,我们需要提供公共的方法
this.name 当前对象的name
对外提供一个为name属性设值的方法
通常在一个类中属性都私有化,对外提供getter setter 方法
成员变量在类中定义,局部变量在方法中定义
成员变量和局部变量 1、在类中的位置不同 成员变量:在类中定义 局部变量:在方法中定义或者方法的参数 2、在内存中的位置不同 成员变量:在堆内存(成员变量属于对象,对象进堆内存) 局部变量:在栈内存(局部变量属于方法,方法进栈内存) 3、生命周期不同 成员变量:随着对象的创建而存在,随着对象的销毁而消失 局部变量:隨着方法的调用而存在,随着方法的调用完毕而消失 4、初始化值不同 成员变量:有默认初始化值,引用类型默认为null 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用 注意: 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
构造方法
什么是构造方法 1、构造方法就是类构造对象时调用的方法,用于对象的初始化工作 2、构造方法是实例化一-个 类的对象时,也就是new的时候,最先调用的方法。 构造方法的定义: 构造方法是在类中定义的,构造方法的定义格式:方法名称与类名称相同,无返回值类型的声明。 对象的实例化语法: Dog dog = new Dog); //new Dog后面有个括号,带括号表示调用了方法,此时调用的方法就是构造方法了
构造方法重载
无参构造方法: 默认构造方法
public Dog(){}
带一个参数的构造方法:
public Dog(String name){
this.name = name;
带多个参数的构造方法:
构造方法小结
(1)构造方法名称与类名相同,没有返回值声明(包括void) (2)构造方法用于初始化数据(属性) (3)每一一个类中都会有- -个默认的无参的构造方法 (4)如果类中有显示的构造方法,那么默认构造方法将无效 (5)如果有显示的构造方法,还想保留默认构造方法,需要显示的写出来。 (6)构造方法可以有多个,但参数不一样,称为构造方法的重载 (7)在构造方法中调用另- -个构造方法,使用tis<..),该句代码必须在第一句工 (8)构造方法之间的调用,必须要有出口。 (9)给对象初始化数据可以使用构造方法或setter方法,通常情况下,两者都会保留。 (10)一个好的编程习惯是要保留默认的构造方法。(为了方便一些框架代码使用反射来创建对象) (11) private Dog(){},构造方法私有化,当我们的需求是为了保正该类只有一个对象时。 什么时候一个类只需要一个对象? 比如,工具类(没有属性的类,只有行为)并且该工具对象被频繁使用。权衡只用一一个对象与产生多个对象的内存使用,来确定该类是否要定义为只需要一-个对象。
this关键字
在Java基础中,this关键字 是-一个最重要的概念。使用this关键字可以完成以下的操作: 调用类中的属性 调用类中的方法或构造方法 表示当前对象:在方法被调用的过程中哪个对象调用了方法,在方法内的this就表示谁
在方法中使用his酒用类中的其它方法或属性,this可以省略,this前 面可以使用当前的类名.this
值传递与引用传递
基本数据类型都是值传递
引用传递
String类型传递 字符串就是一个对象 可以理解为两个对象的出现 改变的时地址
this
对象的一对一关系 P45 ????????
static 关键字
1、静态变量或方法不属于对象,依赖类
2、静态变量时全局变量,生命周期从类被加载后一直到程序结束
3、静态变量只存有一份,在静态方法区中存储
4、静态变量是本类所有对象共享一份
5、建议不要使用对象名去调用静态数据,直接使用类名调用
6、static修饰一个方法,那么该方法属于类,不属于对象,直接用类名调用
7、静态方法不能访问非静态属性和方法,只能访问静态的
static关键字的作用:
1、使用static关键字修饰一个属性 声明为static的变量实质上就是全局变量
2、使用static关键字修饰一个方法 通常,在一个类中定义- -个方法为static,那就是说,无需本类的对象即可调用此方法 3、使用static关键字修饰一-个类( 内部类)
声明为static的方法有以下几条限制: 它们仅能调用其他的static方法。 它们只能访问static数据。 它们不能以任何方式引用this或super. 什么时候使用static? 所有对象共同的属性或方法,那么我们应该定义为静态的。
main方法分析:
主方法:
public static void main(String[] args){
//代码块
}
public:公有的,最大的访问权限
static:静态的,无需创建对象
void::表示没有返回值,无需向JVM返回结果
main:方法名,固定的方法名
String[] args:表示参数为字符串数组,可以在调用方法时传入参数
代码块
1、普通代码块,在方法中写的代码块
2、构造块,是在类中定义的代码块,在创建对象时被调用优于构造方法执行
3、在类中使用static声明的代码块称为 静态代码块
在我们第一次使用的时候被调用(创建对象),只会执行一次,由于构造块执行
在项目开发中,通常会使用静态代码块来初始化只调用一次的数据
比如:读取配置
4、同步代码块(多线程中讲解)
重点使用静态代码块 普通代码块 同步代码块 构造代码块
单例设计模式
单例设计模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点 1、构造方法私有化 2、声明一个本类对象 3、给外部提供--个静态方法获取对象实例 两种实现方式: 1、饿汉式 2、懒汉式
标签:调用,Java,构造方法,对象,static,封装,狂神,方法 From: https://blog.51cto.com/u_15227402/5928559