狂神说 Java

使用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

相关文章:

你感兴趣的文章:

标签云: