`
klts
  • 浏览: 41305 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论
  • klts: 我一直用的jdk1.6.0_13,感觉还可以
    JDK
  • wuyulunbi: 现在jdk什么版本的稳定
    JDK

Java基础总结

 
阅读更多

面向对象技术

Java面向对象的四大特征

抽象:对现实中的某一实体或事件提取相同信息和共同规律的过程

封装:就是将属性或行为隐藏起来,不允许其他人修改,仅对外提供接口。

继承

多态:静态多态和动态多态

访问修饰符

Public:公共的。所有对象都可以调用

Private:私有的。自己内部使用

Protected:受保护的。子类和自己可以使用

Friendly:友好的。同一个包里可以访问。(默认访问修饰符)

方法的重载:同名的方法,参数类型、参数个数、参数的顺序不同的情况。

方法返回类型的不一样不能说明是重载方法。必须依靠方法的名字、参数类型、参数个数、参数顺序

例:下面的两个方法是同种方法,不能称为方法的重载,即使它们的返回类型不同。

    public void say(){

                  System.out.println("你好啊!");

         }

    public int say(){

                  System.out.println("你好啊!");

        return 1;

         }

 

 

构造函数:在类的实例化,或者调用this()方法的时候自动调用的构造函数。用于对象的创建和初始化

作用:初始化成员变量或者其他的一些数据

特征:构造函数的名称和类名一样

  没有返回值的类型

  可以重载构造函数

当类没有构造函数的时候,类在实例化的时候会自动加上无参的构造函数

值传递和引用传递

值传递:参数传递的是值的副本。方法得到的是保存在形参中的原实参变量的值的副本,对形参变量的操作和修改不会影响到原来实参变量的值。基本数据类型是值传递

public class test1{

public static void main(String args[]){

          int tmp=10;        

          System.out.println(" 改变前:tmp="+tmp);

       change(tmp);

          System.out.println(" 改变后:tmp="+tmp);

}

public static void change(int tmp){

          tmp=100;

}

}

class people{

         int age;

}

结果不变

 

引用传递:参数传递的是值的引用地址,形参和实参引用同一个对象,传递一个指针。对象是引用传递。String本质是引用传递,String的不可修改的特性导致多次赋值时会重建新的String对象,改变的只是地址。

public class test1{

public static void main(String args[]){

          people p=new people();

          System.out.println(" 改变前:p.age="+p.age);

       change(p);

          System.out.println(" 改变后:p.age="+p.age);

}

public static void change(people p){

              p.age=100;

}

}

class people{

         int age=0;

}

结果发生变化,变为100

 

终态

终态类:不能被继承、修改的类,使用finalString 是一个终态类

终态方法:不能被覆盖、修改的方法,使用final

终态属性:不能被修改的属性。final在属性前表示常量。

This关键字:代表类\对象自身

this()调用类自身的构造函数,必须出现在构造函数的第一行。

继承extends

子类继承父类可获取非私有的方法和数据。重复使用共同的方法和属性,简化了代码

Java不支持多继承。

当实例化子类的时候,默认调用父类的无参构造函数。通过super()调用不同的父类(超类、基类)构造方法。super()还可以表示对父类的引用。

例:

public class test{

         public static void main(String args[]){

             Manager m=new Manager("老板",2000);//调用Manager类的有参构造函数

             System.out.println("姓名:"+m.EmpName);

             System.out.println("薪资:"+m.getSalary());

             System.out.println("职位:"+m.EmpDept);

         }

}

class Manager extends Employee{

         protected String EmpDept;

         protected int ManagerSalary;

        

         public Manager(){

            this.EmpDept="高级经理";

            this.ManagerSalary=1000;

         }

         public Manager(String EmpDept,int ManagerSalary){

            super(2,"李四",2000);//调用父类的有参函数

            this.EmpDept=EmpDept;

            this.ManagerSalary=ManagerSalary;

         }

         //当子类中出现和父类中方法名一样的方法,子类的该方法覆盖父类的方法

         public int getSalary(){

             return EmpSalary+ManagerSalary;

         }

}

class Employee{

         protected int EmpId;

         protected String EmpName;

         protected String EmpSex;

         protected String EmpPhone;

         protected String EmpAddr;

         protected int EmpSalary;

 

         public Employee(){

            this.EmpId=1;

            this.EmpName="张三";

            this.EmpSalary=1000;

         }

         public Employee(int EmpId,String EmpName,int EmpSalary){

            this.EmpId=EmpId;

            this.EmpName=EmpName;

            this.EmpSalary=EmpSalary;

         }

         public int getSalary(){

            return EmpSalary;

         }

}

静态方法、静态成员、静态块和普通块。使用static

静态:先于实例化执行的代码,在类的实例化之前就加载静态内容到内存当中。

l  非静态方法可以引用静态方法,但是静态方法不能直接引用非静态方法。

l  静态方法(自定义的)和非静态方法实例化后都可以在任何地方应用其内部方法,
通过“实例化对象类名.方法名”实现。

l  静态方法一般不需实例化,直接通过“类名.方法名”调用。

l  静态成员的赋值是为其最初的空间赋值,若有重赋值则覆盖原来的值。非静态成员则不一样。

静态方法和静态成员通过类名调用。

例:静态方法say、静态字段age

public class test2{

         public static void main(String args[]){

              people.say();

              people.age=100;

              System.out.println(people.age);

         }      

}

class people{

         String name;

         static int age;

         public static void say(){

             System.out.println("非静态的方法");

         }

}

 

静态变量的引用是不初始化的,直接用最初的声明空间,改变值就是改变最初空间里的值。

非静态变量的引用需要初始化,改变值是改变初始化后的空间的值。

 

静态变量的变量类型可以是一个类。

例:public static TestA a = new TestA(); 

通过new TestA实例化类TestA,然后将其赋值给类型为TestAa

 

单独的程序块在构造函数前执行。例{}

静态块的作用:初始化静态变量及其他静态信息。

程序块执行先后顺序

静态程序块>非静态程序块>构造函数

子类和父类构造函数的执行顺序

父类的静态块>子类的静态块>父类的非静态块>父类的构造函数>子类的非静态块>子类的构造函数

 

覆盖

原则:方法的返回类型相同;方法的名称相同;方法的参数类型、数量、顺序相同;子类方法修饰符的权限不能比父类更小。

Object里面的equals方法。比较两个对象是否“相等”,比较的是引用地址。

方法的参数里面可以用子类去替换父类(里氏代换原则)

equalsobject类的一个方法,比较的是两个对象,即地址。String继承object类,它的equals方法覆盖objectequals方法,比较两个数的值。类似的还有IntegerDouble

String str=”test”;

String str2=”test”;

System.out.println(str.equals(str2));

结果为truestrstr2是两个值,此时equals比较两个值

String str=new String(”test”);

String str2=new String(”test”);

System.out.println(str==str2);

结果为false==”比较两个对象

String str=new String(”test”);

String str2=new String(”test”);

System.out.println(str.equals(str2));

结果为trueStringequals方法覆盖objectequals方法比较两个数的值。

Manager m=new Manager("老板",2000);

Manager m2=new Manager("老板",2000);

System.out.println(m.equals(m2));

结果为falseManager继承objectequals比较两个对象。

总结:对于String这样的类,equals比较的永远是值,==根据条件比较对象或值。

      对于其他的没有覆盖object中的equals方法的声明类,equals==都比较两边的对象。

抽象类和抽象方法

抽象类:只能被继承,不能被实例化,抽象类中可以是抽象方法,也可以是普通方法。

当抽象类被子类继承时,子类必须覆盖父类的抽象方法。

抽象方法:只能是声明,不能被实现,只能出现在抽象类和接口里面。

多态

静态多态:方法重载

动态多态:程序运行时根据对象类型找到对应的方法。

例:

public class test1{

         public static void main(String args[]){

              Shape s=new sanjiao();//实例化sanjiao后赋给对象shape

              System.out.println(s.getShape());

         }

}

abstract class Shape{

         String waiguan;

         public abstract String getShape(); 

         public void test(){

             return "aa";

         }

}

class sanjiao extends Shape{

         public String getShape(){

             return  "三角形";

         }

}

 

异常执行顺序try语句出现异常)

Finallyreturn

catchreturn语句—》finallyreturn语句—》finally return语句:得到finally return结果

finallyreturn

catchreturn语句—》finallyreturn语句—》catch return语句:得到catch return结果

分享到:
评论

相关推荐

    java基础总结大全(笔记).pdf

    Java基础总结大全涵盖了Java编程语言的核心概念,从JVM、JRE和JDK的区别,到环境变量的设置,再到变量的定义和类型转换,深入浅出地讲解了Java的基础知识。 1. JVM、JRE和JDK: - JVM(Java Virtual Machine)是...

    java基础总结资料

    "java基础总结资料"涵盖了Java语言的核心概念,是学习和复习Java基础知识的重要资源。以下是一些主要的知识点: 1. **Java语法基础**:包括变量声明、数据类型(基本类型和引用类型)、运算符、流程控制(如if语句...

    java基础总结大全

    【Java基础总结大全】 Java是世界上最流行的编程语言之一,其跨平台特性主要依赖于Java虚拟机(JVM)。JVM是Java的核心组成部分,它解析并执行编译后的Java字节码,确保Java程序可以在任何支持JVM的操作系统上运行...

    java基础总结

    ### Java基础总结 #### 一、Java概述 Java是由Sun Microsystems公司(现已被Oracle收购)在1991年由James Gosling领导的团队所开发的一种面向对象的编程语言。最初命名为Oak,旨在用于控制嵌入式设备和消费电子...

    JAVA基础总结PPT

    JAVA基础总结PPT ,基础知识前4章部分,适合回顾总结用。

    老毕java基础总结

    "老毕java基础总结"是一个专为初学者设计的学习资源,旨在帮助他们掌握Java编程的基础知识。下面,我们将深入探讨这份文档可能涵盖的关键知识点: 1. **Java环境配置**:学习Java的第一步是安装JDK(Java ...

    毕向东java基础总结(完整版)

    毕向东java基础总结(完整版) 本资源为毕向东老师的java基础总结,涵盖了java的基础知识点,从零开始学习java的自学笔记。本文档对java的基础知识进行了系统的总结,包括java的概述、java语法基础、变量、数据类型...

    java基础总结文档

    【Java基础总结】 Java是一种广泛使用的面向对象的编程语言,具有丰富的类库和强大的功能。以下是对Java基础知识的总结,适合长时间未接触Java的人快速查阅,同时也非常适合初学者学习。 ### Eclipse相关 Eclipse...

    01 java基础总结 xmind

    java基础知识总结 以思维导图的方式对java中的变量、八种基本类型、运算符和表达式、逻辑结构、数组、方法等知识点进行总结

    Java基础总结笔记

    Java基础总结笔记主要涵盖了编程语言Java的核心概念和应用领域,旨在为初学者提供全面的指导。以下是这些知识点的详细说明: 1. **Java基础语法**:这是学习Java的第一步,包括变量、数据类型(基本类型与引用类型...

    JAVA基础总结共4页.pdf.zip

    【标题】"JAVA基础总结共4页.pdf.zip" 提供的是关于Java编程语言的基础知识的浓缩版教程,可能涵盖了从入门到进阶的关键概念。Java是一种广泛应用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司)开发,...

    CoreJava基础总结

    ### CoreJava基础总结 #### Module1 -- Java开发环境介绍及编程入门 1. **Java开发基本术语** - **JDK (Java Development Kit)**:Java开发工具包,它包含了类库(Class Library)以及用于Java开发的各种命令工具...

    java基础总结大全共94页.pdf.zip

    【标题】"Java基础总结大全共94页.pdf" 是一份详尽的Java编程语言学习资料,涵盖了Java语言的基础知识,旨在帮助初学者或有一定经验的开发者巩固和深化对Java的理解。这份文档可能包含了从基本语法到核心概念的全面...

    java基础总结大全(笔记).pdf.zip

    这份"java基础总结大全(笔记).pdf"涵盖了Java的基础知识,对于学习者来说是一份宝贵的资源。 1. **Java语法基础**:Java的基础语法包括变量、数据类型、运算符、流程控制语句(如if条件语句、switch选择语句、for、...

    Java基础总结大全

    在"Java基础总结大全"中,我们将会深入探讨Java语言的核心概念和关键特性,帮助初学者建立坚实的Java编程基础。 一、Java语言基础 1. 变量与数据类型:Java提供了基本数据类型(如int、char、float等)和引用数据...

    java基础总结.rar

    本资料“java基础总结.rar”包含了对Java基础知识的全面概述,是学习和复习Java编程的理想参考资料。以下是该文档可能涵盖的一些核心知识点: 1. **Java语言简介**:介绍Java的历史、特点和应用领域,解释为什么它...

Global site tag (gtag.js) - Google Analytics