Java基础总结

问题描述

[size=24px][size=16px][b][b]Java面向对象编程总结Java基础关键字:在JDK1.2之前是48个关键字。在JDK1.5以后加了新增两个关键字。特殊关键字不能做标识符,都是小写abstract---定义抽象类或者抽象方法assert---断言(*)boolean---定义布尔类型的关键字byte---定义字节类型(最小的整型)的关键字break---终止循环catch---捕获异常continue---让循环进入下一趟循环char---定义字符型的关键字class---定义类的关键字case---用于switch-case-default多分支结构的关键字(定义一个分支(等值判断),通常每个分支后会有一个break)default---用于switch-case-default多分支结构的关键字(之前的case都没有匹配上就会执行default中的代码)double---定义双精度类型的关键字do---构造do-while循环的关键字else---构造if-else分支结构的关键字enum---定义枚举类型的关键字(符号常量)(*)extends---继承的关键字final---三种用法:a.定义常量;b.定义终结类;c.定义终结方法finally---定义总是执行代码(通常跟在try-catch之后,释放外部资源)float---定义单精度浮点型的关键字for---构造for循环的关键字if---构造if-else分支结构的关键字int---定义整型的关键字implements---用于实现接口的关键字instanceof---用于RTTI(运行时类型识别)的关键字import---导入包的关键字interface---定义接口的关键字(约定、能力、角色)long---定义长整型的关键字new---创建对象的关键字native---声明本地方法的关键字(由C/C++编写的方法)package---定义包的关键字(管理类、解决名字冲突问题)public---访问修饰符(公开)protected---访问修饰符(受保护:对子类相当于公开,对不在同一个包下的其他类相当于私有)private---访问修饰符(私有)return---让方法返回的关键字static---静态修饰符(静态方法、静态成员、静态初始化块、静态内部类)strictfp---定义严格浮点运算的关键字super---代表父类对象引用的关键字(可以调用父类构造器、调用父类方法、访问父类成员)synchronized---同步switch---用于switch-case-default多分支结构的关键字(switch接受的表达式可以是byte、short、int、char,1.5可以接受enum、1.7可以接受String)short---定义短整型的关键字this---表示当前对象引用的关键字transient---表示不需要序列化的关键字throw---抛出异常对象throws---在定义方法时声明方法调用可能引发的异常try---将可能出异常状况的代码保护起来void---没有返回值volatile---防止编译器错误优化假设的关键字while---构造do-while循环的关键字/构造while循环的关键goto---跳转(不能用,保留字)const---常量(不能用,保留字)标识符标识符的命名规则:1.字母、数字、下划线和$,数字不能开头2.大小写敏感3.不能跟关键字冲突见名知意变量和方法命名:驼峰标识(CamelNotation)第一个单词小写以后每个单词首字母大写类命名:帕斯卡标识(PascalNotation)每个单词首字母大写运算符+-*/%算术运算=+=-=*=赋值运算()类型转换/改变优先级[]下标运算?:条件运算(三目运算/三元运算)&&短路与||短路或短路运算&逻辑与|逻辑或!逻辑变反><>=<===!=关系运算instanceof类型识别运算new创建对象运算++--自增/自减运算&|^~>><<>>>位运算+字符串连接+-正负号运算.访问成员运算,逗号运算注意:当两个同等优先级别的运算符出现在一个语句中时,Java语句规定它们从左到右执行计算。字面量直接量100、10L1.5F、3.14、1.2E-3'x'、't'、'u0xAB'"Hello,world"String.class、int[].class分隔符逗号、分号、圆括号、方括号、花括号、冒号、空格数据类型基本数据类型:整型:byteshortintlong浮点型:floatdouble字符型:char布尔型:boolean(truefalse)引用数据类型:除开基本数据类型都是引用数据类型数据的类型转换:强转导致精度丢失或溢出程序控制顺序结构分支结构ifelse-ifelseswitch-case等值比较。比较的类型:byteshortintlongchar1.5以后接受enum(枚举)1.7以后接受String循环结构do-whlie后验循环,循环至少被执行一次while先验循环for先验循环break:结束本次循环continue:结束本层循环,只能用在循环里面方法签名的组成:访问修饰符可选修饰符返回值方法名形式参数列表抛出异常列表Java只有按值调用。可以调用构造器的唯一时机是对象被实例化。Java面向对象Java是纯面向对象编程的语言。面向对象编程把软件系统看成对象的集合,更接近人类的自然思维方式。对象的特征:万物皆对象,对象因关注而产生(在问题领域中实体和概念都可以抽象为对象,但是对象的产生只是因为我们关注而存在)每个对象都是唯一的(没有相同的两片树叶,所以也没有相同的两个对象)对象具有属性和行为(每个对象都有相应的描述,相应的特征,相应的形容词。就是对象的属性和行为)对象具有状态(例如人,人的体重是随时在改变的这就是状态)对象都属于某个类,每个对象都是某个类的实例(对象时类的实例,是具体的实现,例如:狗,猫。都是动物)类:是一组具有相同属性和行为的对象的组合用类来模拟现实生活中的是实体,是所有对象的抽象统称,似模板。属性:特征,数据,属性是形容词。行为:就是动词,是方法。类是对象的抽象,对象是类的实例。面向对象的特征(四大支柱):继承,多态,封装,抽象。继承继承:从已有的类创建新类的过程。其表达了对象的一般与特殊的关系,体现了软件重用性和分离的特性,而在java中,只有单继承,每个子类只有一个父类关键字:extends继承优点:代码可重用性;父类的属性和方法可用于子类;子类可以进行扩展父类的属性和行为;设计应用出现变得简单;让类具备层次结构便于分析继承工作方式:当new一个子类对象时,那么首先调用的是父类的构造方法再在父类后面跟上子类相应属性,即父类部分和子类部分共同构成完整的子类对象,其在内存中采用内存叠加提供继承信息的类叫父类(超类,基类)得到继承信息的类叫子类(派生类,衍生类)子类是用来扩展父类能力的,如果子类缩小父类的能力继承关系不成立。1、父类对象可以指向子类对象2、Java只支持单继承在继承中父类需要给子类提供构造器。构造器:方法名与类名相同,没有返回值。构造器的作用:初始化数据和创建对象方法重载:方法名相同,参数列表不同。满足重载的条件:方法名相同方法阿德参数类型、个数、顺序不同方法的返回类型可以不相同方法的修饰符可以不同参数签名是指:参数的类型、个数和顺序。方法重写(Override):如果子类中定义的一个方法,其名称、返回类型及参数签名正好与父类中某个方法的名称、返回类型及参数签名相匹配,这就是子类方法覆盖了父类方法。方法重写必须满足的约束:子类方法的名称、参数签名和返回类型把必须与父类的方法名、参数签名和返回类型一致。子类方法不能缩小父类方法的访问权限。子类不能抛出比父类方法更多的异常。方法覆盖至存在与子类和父类。在同一个类中方法只能被重载,不能被覆盖。父类的静态方法不能被子类覆盖为非静态方法。子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法。《Java面向对象编程》P167父类的非静态方法不能被子类覆盖为静态方法。父类的私有方法不能被子类覆盖父类的抽象方法可以被子类通过两种途径覆盖:1、子类实现父类的抽象的方法,2、子类重新申明父类的抽象方法。父类的非抽象方法可以被覆盖为抽象方法。方法重载与方法重写的相同之处:都要求方法名相同都可以用于抽象方法和非抽象方法之间方法重载与方法重写的区别:方法重写要求参数签名必须一致,而方法重载要求参数签名必须不一致方法重写要求返回类型必须一致,而方法重载对此不做限制方法重写只能用于子类重写父类的方法,方法重载用于同一个类的所有方法(包括从父类中继承而来的方法)方法重写对方法的访问权限和抛出异常有特殊要求,额方法重载在这方面没有任何限制。父类的一个方法只能被子类重写一次,而一个方法在所在的类中可以被重载多次。Super和thisSuper的使用:在构造器中,通过super语句调用父类的构造方法在子类中访问父类被屏蔽的方法和属性注意:只能在构造方法或实例方法内使用super关键字,而在静态方法和静态代码块内是不能使用super关键字的封装封装:隐藏实现细节,提供简单的编程接口。封装优点:便于使用者正确、方便和使用;体现系统间松散耦合关系,提高软件的可重用性;降低大型系统的构建风险修饰符访问权限:多态多态:相同行为不同实现。子类在对父类的方法进行重写的过程中,不同的子类可以给出不同的实现版本。动态绑定:主要特征体现在其既有继承又有重写其中父类的引用可以指向子类对象但不能有子类的引用指向父类(内存叠加)多态绑定-----接口的引用指向实现接口的对象当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但这些对于A系统来说是透明的。对象造型(将子类对象交给父类型的引用)Java语言允许引用变量转型:如果把引用变量转换为子类型,则称为向下转型(需要强转)如果把引用变量转换为父类型,则称为向上转型(子对象可以看做父对象)注意:两种类型不存在继承关系,那么Java编译器不允许转型。接口接口:其定义一组公共方法由所需要提供这些功能的类共同实现implements关键字是实现接口interfac关键字是定义接口是一种约定(实现了接口就必须要重写接口中所有的抽象方法)代表一种能力(实现了接口,就具备了接口所描述的能力)代表一种角色(一个类可以实现很多个接口(扮演多种角色),一个接口也可以被很多个类实现(一个角色可以由多个类扮演))接口的修饰符只能是publicstaticfinal,接口里面的方法只能为抽象方法,即没有方法体得存在其可以不写abstract方法的修饰符只能是public接口与抽象的比较1、接口比抽象类更抽象,所以在使用上比抽象类更灵活2、优先使用接口而不是抽象类3、接口中的变量都是常量4、接口中的方法都是公开的抽象方法5、常量接口是接口最不正确的使用方式,接口中应该只定义方法接口隔离原则:接口要小而专,绝不是大而全抽象类abstract关键字在一个实际的对象里是不可能存在不知道的具体行为,所有抽象方法必须在抽象类中进行声明抽象类不能实例化,抽象类就是拿给其他类去继承的如果一个类有抽象方法,这个类必须被声明为抽象类一个抽象类可以继承非抽象类,当一个子类继承抽象类时要么将子类该为抽象类,要么将抽象类得方法在子类中重新抒写一遍并且实现其方法,名称必须保持一致设计原则1.单一职责原则(高内聚)2.开闭原则(抽象是关键;封装可变性)3.依赖倒转原则(面向接口编程)4.里氏代换原则(子类型可以替换父类型)5.接口隔离原则(接口要小而专)6.合成聚合复用原则(优先使用Has-A关系而不是Is-A关系复用代码)7.迪米特法则(低耦合)[/b][/size][/b][/size]

解决方案

解决方案二:
不错

时间: 2024-09-22 20:01:56

Java基础总结的相关文章

java基础问题求指教谢谢

问题描述 java基础问题求指教谢谢 形如 A a=new A();-------------1 a=new A();--------------2 辣么,a到底指的是哪个对象?1还是2? 五楼的说法对么? 解决方案 只用new关键字是为了创建一个对象,你使用了两次new关键字进行创建,会在内存中创建两个A的对象,a是你声明的一个引用,在程序中以最后一次的指向为准,这里是指向最后一个. 解决方案二: new 最后一个对象时,内存又为它分配了新的地址,所以a只想最后一个 解决方案三: a 在最后被

java基础多线程之共享数据

java基础巩固笔记5-多线程之共享数据 线程范围内共享数据 ThreadLocal类 多线程访问共享数据 几种方式 本文主要总结线程共享数据的相关知识,主要包括两方面:一是某个线程内如何共享数据,保证各个线程的数据不交叉:一是多个线程间如何共享数据,保证数据的一致性. 线程范围内共享数据 自己实现的话,是定义一个Map,线程为键,数据为值,表中的每一项即是为每个线程准备的数据,这样在一个线程中数据是一致的. 例子 package com.iot.thread; import java.util

Java基础:初学者Java语言入门精典文章

初学 Java总有它的千般好处使你选择它,但这些随便翻翻书或在网上逛一圈就能找到答案.在本文中,笔者把自己学习Java的一些切身体会和过程写出来,供初学者做个参考. 我在学习Java的过程中主要围绕以下几个方面来学习: 1.时刻提醒自己Java是一种OOP语言工具,而不仅仅是编码,只有这样才能总体把握和运用Java. 2.在学习的过程中,最好能够了解Java的底层机制,而不是仅仅停留在表层,不是抄书上的例子运行出结果就可以.要注意,即便对一个简单的例子也要有耐心去琢磨.调试.改动. 3.在学习的

J2ME中需要的Java基础知识

现在有大部分人,都是从零开始学J2ME的,学习J2ME的时候,总是从Java基础开始学习,而且现在讲Java基础的书籍中都是以J2SE来讲基础,这就给学习造成了一些不必要的麻烦,下面将J2ME中用到的和不需要的Java基础知识做一个简单的说明:        J2ME中使用到的Java基础知识: 1.  Java语法基础:包括基本数据类型.关键字.运算符等等 2.  面向对象的思想:类和对象的概念,继承和多态等等. 3.  异常处理 4.  多线程 J2ME中没有用到的Java基础知识: 1. 

JAVA基础培训(11),方法的Override

Override, 主要是因为父类的功能无法满足需求,我们又不能直接修改父类的情况下 ,我们通过子类重写,来实现新的功能. package Lession11; import java.util.ArrayList; import java.util.List; /** * 老紫竹JAVA基础培训(11),方法的Override.<br> * * * @author 老紫竹 JAVA世纪网(java2000.net) * */ public class Lession11 { public s

JAVA基础培训(10),方法的Overload介绍

今天在项目里做事,中午休息时间,补上这个教程吧.这次我们看看Overload 的内容 . 测试代码 package lession10; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; /** * 老紫竹JAVA基础培训(10),方法的Overload介绍.<br> * 匹配方式为最特殊匹配,或者叫最准确匹配<br> * 如果发现多个都有相同的匹配度,则编译报错. * *

JAVA基础培训(9),控制台键盘输入(System.in)

从键盘输入是一个很重要的功能,这里给出了个人推荐的方式,用Scanner读取输入数 据 package lession9; import java.io.InputStream; import java.util.Scanner; /** * 老紫竹JAVA基础培训(9),控制台键盘输入(System.in). * * @author 老紫竹 JAVA世纪网(java2000.net) * */ public class Lession9 { public static void main(St

JAVA基础培训(8),认识接口

这讲我们来重点熟悉接口的使用,包括接口的声明,继承,属性的定义以及类的实现 等. 最终的目录结构 先看相关的代码 lession8/Lession8.java package lession8; import lession8.otherpackage.InterfaceOtherPackagePublic; /** * 老紫竹JAVA基础培训(8),认识接口.<br> * * * @author 老紫竹 JAVA世纪网(java2000.net) * */ public class Less

JAVA基础培训(7),构造器的使用

这里主要看类的构造器的情况,默认的,无参数的,有参数的,有不同参数类型的, 有多个参数的等各种情况. package lession7; /** * 老紫竹JAVA基础培训(7),构造器的使用.<br> * * @author 老紫竹 JAVA世纪网(java2000.net) * */ public class Lession7 { public static void main(String[] args) { new class1(); // 使用了系统自动提供的无参数构造器 new c

JAVA基础培训(6),For循环语句的使用

在所有的循环中,最常用的就是for了,另外2个 while和do..while我基本不用.所以 我这里就把for循环重点介绍一下. 源代码 package lession6; /** * 老紫竹JAVA基础培训(6),For循环语句的使用.<br> * * @author 老紫竹 JAVA世纪网(java2000.net) * */ public class Lession6 { /** * for循环有三部分用分号分割<br> * 第一部分是初始的数据<br> * 中