java重点知识归纳
- 格式:docx
- 大小:142.70 KB
- 文档页数:20
java基础知识点
1、面向对象:Java语言是一种面向对象的编程语言,它使用Java类和Java对象来构建复杂的系统。
Java类包含方法(程序执行的语句)和属性(关于对象的信息)。
可以使用对象间的关系(如继承和实现)来“重用”代码。
2、语言基础:Java语言是一种类型安全的、健壮的和高效的编程语言,它具有静态类型系统、异常处理、泛型和沙箱安全机制等功能。
这种类型安全指的是Java可以通过显式声明变量的数据类型来确保变量的内容。
3、继承:Java支持继承机制,可以将多个类“组装”在一起,互相共享代码并复用属性和方法。
继承是一种多态性,它允许每个类“定义”它自己独有的行为,但与同一父类共享相同接口。
4、包:Java使用java包来组织类和接口,它提供了独立的命名空间,可以将相似的类和接口组装在一起,以保持代码整洁和可维护性。
5、容器:容器是Java中的一种特殊数据类型,它可以储存和管理多个对象。
Java提供了多种容器,比如ArrayList,Map,HashMap 等,帮助程序员管理复杂的系统。
java基础知识总结java基础知识总结pptjava基础知识总结篇(一):Java基础知识总结1.什么是类和对象?__ING IS OBJECT(万物皆对象)所有的事物都有两个方面:有什么(属性):用来描述对象。
能够做什么(方法):告诉外界对象有那些功能。
对象:对现实世界中的实体的抽象。
在计算机中,是指可标识的存储区域。
类:具有共同属性和行为的对象的抽象。
类是创建对象的模板。
2.为什么要使用面向对象?首先,面向对象符合人类看待事物的一般规律。
对象的方法的实现细节对其他对象是屏蔽的。
我们通过类来看待对象,类是对象的抽象。
其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。
对象之间的耦合性一定要低。
这样才能使每个对象本身做成最好的。
对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。
实现高内聚就是要最大限度低提高复用性(复用性好是因为高内聚)。
可复用性是OOP的基础。
3.面向过程思想和面向对象思想比较?面向过程的思想:由过程、步骤、函数组成,以过程为核心;面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。
4.实例变量和局部变量的比较实例变量:定义在类中但在任何方法之外。
(New出来的均有初值)局部变量:定义在方法之中的变量。
局部变量要先赋值,再进行运算,而实例变量均已经赋初值。
这是局部变量和实例变量的一大区别。
实例变量的对象赋值为null。
不允许在同一作用域内定义两个相同名称的实例变量和局部变量,但实例变量和局部变量允许命名冲突。
区分实例变量和局部变量时一定要写this。
5.介绍一下对构造函数的理解构造方法是当用类生成对象时,系统在生成对象的过程中利用的方法。
注意:构造方法在生成对象的时候会被调用,但并不是构造方法生成了对象。
构造方法没有返回值。
格式为:public 方法名。
构造方法的方法名与类名相同。
构造方法是在对象生成的过程中自动调用,不可能利用指令去调用。
java期末考点总结一、基础知识1. Java语言的起源和特点2. Java开发环境的配置和使用3. Java程序的基本结构和语法规则4. 数据类型和变量5. 运算符和表达式6. 控制流程和循环结构二、面向对象编程1. 面向对象的基本概念和原则2. 类和对象的定义和使用3. 封装、继承和多态4. 接口和抽象类5. 继承和多态的应用6. 继承和接口的区别三、异常处理1. 异常的概念和分类2. 异常的处理机制3. try-catch语句的使用4. finally语句的作用5. 异常的抛出和捕获6. 自定义异常四、常用类库1. String类的常用方法2. Math类和常用数学方法3. Date类和Calendar类的使用4. 集合框架和常用集合类5. IO流的使用6. 文件的读写操作五、多线程编程1. 进程和线程的概念2. 创建线程和实现Runnable接口的区别3. 同步和互斥的实现4. 线程的状态和控制5. 线程的优先级和调度6. 线程池的使用和管理六、网络编程1. 网络通信的基本概念和协议2. Socket编程和TCP/IP协议3. UDP协议和DatagramSocket类4. URL和URLConnection类的使用5. 服务器和客户端的通信6. HTTP协议和网页的访问七、图形用户界面1. AWT和Swing的区别和优缺点2. 组件的布局和事件处理3. 容器和组件的层次结构4. 图形用户界面的设计和优化5. 多线程和事件处理6. 用户界面的国际化和本地化八、数据库编程1. 数据库的基本概念和SQL语句2. JDBC的使用和连接数据库3. Statement和PreparedStatement的使用4. ResultSet的处理和数据库操作5. 事务和批处理的管理6. 数据库连接池的使用九、Web开发1. HTML和CSS的基本语法和标签2. JavaScript的基本语法和事件处理3. Servlet和JSP的概念和使用4. MVC模式的理解和应用5. 数据库连接和数据处理6. Web应用的发布和部署十、设计模式1. 设计模式的基本概念和分类2. 单例模式和工厂模式的实现3. 观察者模式和适配器模式的应用4. MVC模式和策略模式的理解和应用5. 模板方法模式和装饰者模式的实现6. 设计模式的优缺点和使用场景以上是Java期末考点的总结,希望能帮助你复习和理解Java编程的重要知识点。
第一讲 Java语言入门1.1 Java的特点1.1.1面向对象:•与C++相比,JAVA是纯的面向对象的语言C++为了向下兼容C,保留了很多C里面的特性,而C,众所周知是面向过程的语言,这就使C++成为一个"混血儿"。
而JAVA语法中取消了C++里为兼容C所保留的特性,如取消了头文件、指针算法、结构、单元等。
1.1.2可移植(平台无关性):•生成中间字节码指令与其他编程语言不同,Java并不生成可执行文件(.exe文件),而是生成一种中间字节码文件(.class文件)。
任何操作系统,只要装有Java虚拟机(JVM),就可以解释并执行这个中间字节码文件。
这正是Java实现可移植的机制。
•原始数据类型存储方法固定,避开移植时的问题Java的原始数据类型的大小是固定的。
比如,在任何机器上,整型都是32位,而C++里整型是依赖于目标机器的,对16位处理器(比如8086),整数用两个字节表示;在像Sun SPARC这样的32位处理器中,整数用4个字节表示。
在Intel Pentium处理器上,整数类型由具体的操作系统决定:对于DOS和Win32来说,整数是2个字节;对于Windows 9x 、NT和2000,整数是4个字节。
当然,使整数类型平台无关之后,性能必然有所下降,但就Java来说,这个代价是值得的。
Java的字符串,则采用标准的Unicode格式保存。
可以说,没有这个特性,Java的可移植性也不可能实现。
1.1.3简单•JAVA在语法上与C++类似JAVA的语法与C++很接近,有过C或者C++编程经验的程序员很容易就可以学会JAVA语法;•取消了C++的一些复杂而低效的特性比如:用接口技术代替了C++的多重继承。
C++中,一个类允许有多个超类,这个特性叫做"多重继承",多重继承使得编译器非常复杂且效率不高;JAVA 的类只允许有一个超类,而用接口(Interface)技术实现与C++的多继承相类似的功能其它被取消的特性包括:虚拟基础类、运算符过载等•JAVA的基本解释器和类支持模块大概仅40K即使加入基本的标准库和支持线程的模块,也才220K左右。
java复习期末重点考点总结一、基本语法1. 变量和常量定义变量和常量,变量的作用域,变量类型转换等。
2. 数据类型Java的基本数据类型,如整型、浮点型、字符型、布尔型等。
3. 运算符Java的运算符,如算术运算符、关系运算符、逻辑运算符、位运算符等。
4. 控制结构条件语句,如if语句、switch语句。
循环语句,如for循环、while循环、do-while循环。
5. 数组一维数组、多维数组的定义和使用。
6. 方法定义方法,方法的重载、调用以及参数传递。
7. 异常处理Java的异常处理机制,如try-catch-finally语句块。
常见的异常类及其使用。
二、面向对象1. 类和对象类和对象的定义,成员变量和成员方法的访问权限。
2. 构造方法和析构方法构造方法和析构方法的定义和使用。
3. 继承子类和父类的关系,继承的实现和使用。
方法重写和父类引用子类对象的特点。
4. 接口接口的定义和实现,接口的多继承。
多态的概念和实现,向上转型和向下转型。
6. 包包的定义和使用,包的导入和导出。
三、输入输出1. 文件操作文件的读取和写入,字符流和字节流的使用。
2. 序列化和反序列化对象的序列化和反序列化,使用序列化实现对象的存储和传输。
四、集合框架1. 集合接口和类常用集合接口和类的介绍和使用,如List、Set、Map等。
2. 迭代器集合的迭代器,实现对集合元素的遍历和操作。
3. 泛型泛型的概念和使用,泛型类和泛型方法。
4. 排序和比较使用集合框架实现元素的排序和比较。
五、线程1. 线程的创建和启动线程的创建方式,使用Thread类和Runnable接口。
2. 线程同步线程同步的方法,如使用synchronized关键字实现线程同步。
3. 线程通信线程之间的通信方式,如使用wait()、notify()、notifyAll()方法进行线程通信。
线程池的定义和使用,使用线程池实现线程的复用。
六、网络编程1. 套接字套接字的概念和使用,使用套接字实现网络通信。
Java编程知识总结Java是一种面向对象的编程语言,在当今的编程界具有重要的地位。
它具有简单易学、跨平台、丰富的库以及广泛的应用领域等优点,因此备受广大程序员的欢迎。
本文将总结Java编程知识,包含Java的基础知识、高级特性、开发工具和经验分享等方面的内容。
一、Java基础知识Java的基础知识包括语法、数据类型、流程控制、方法、数组等方面。
1.语法Java的语法与C++和C有很多相似之处,但也有许多不同之处。
Java的代码都是以类的形式组织,而在类内则是由方法来组成。
Java的语法比较严谨,对于代码格式有较高的要求。
例如,Java中要求每一个语句以分号结尾。
另外,在Java中,大小写具有区别性。
2.数据类型Java的数据类型与C++和C的数据类型类似,主要包括基本数据类型和引用数据类型。
Java的基本数据类型有byte、short、int、long、float、double、char和boolean等八种,其中char和boolean类型的变量必须进行初始化。
Java的引用数据类型包括数组、类、接口和枚举等。
3.流程控制Java中的流程控制主要有分支结构和循环结构两种。
其中,Java的if、else和switch等分支结构与C++和C的分支结构类似,但Java中的循环结构使用更加灵活,包括for、while、do-while等循环语句。
4.方法Java中的方法是一种封装代码的方式,也是Java中最基本的组织方式。
方法可以接受参数和返回值,可以在其他方法内部或外部被调用。
Java方法的定义形式为“访问修饰符返回值类型方法名(参数类型参数名)”。
5.数组Java中的数组是一种引用数据类型,可以存储多个相同数据类型的值。
Java中的数组可以被初始化并赋予初值,数组的下标从0开始。
Java中使用数组的方式与C++和C的方式类似。
二、Java高级特性Java的高级特性包括多线程、反射、注解和泛型等方面。
面向对象3.1 面向对象介绍1.什么是面向对象对象其实就是现实生活中的各种物体,他们有各种各样的功能,当我们需要借助这些物体去完成我们的需求时,我们就是在面向这些对象,使用它们其中的功能,至于他们其中的功能是如何实现的,我们无需知道,只要能完成需求即可.2.什么是面向对象编程(OOP):Object Oriented Programming 是一种编程思想, 使用对象去进行编程.它的特点有: 封装, 继承, 多态3.对象从哪来:对象是需要先用类来描述, 然后使用类来创建.类是对象的描述, 对象是类的实例.4.面向对象的优点提高代码复用性.使用者无需关心对象其中是如何实现的.让程序员从一个编写者转换成一个使用者.更加符合人的思维能力,使编程更简单.3.2 定义类1.成员变量在类中用变量来描述这一类对象公有的特征.2.成员函数在类中用函数来描述这一类对象公有的行为.3.3 创建和使用对象1.怎么创建使用"new 类名()"形式创建一个对象2.怎么使用通过"."语法来访问类的成员.例如: Person p = new Person(); = "张三";p.eat();3.4对象的初始化过程1.加载类类在第一次使用的时候被加载到内存中2.初始化成员变量当创建对象的时候, 成员变量会初始化为默认值, 基本数据类型都是0, 引用数据类型都是null3.5对象的生命周期1.开始new关键字创建对象的时候, 生命周期开始2.结束没有任何引用指向对象, 该对象成为垃圾, 被虚拟机回收3.6 匿名对象1.什么是匿名对象没有任何引用指向的对象, 就叫匿名对象2.匿名对象有什么特点匿名对象在创建之后立即被回收, 只能使用一次3.7 封装1.什么是封装封装就是将一类事物的特征和行为封装在一个类中,定义成成员变量和成员函数创建对象之后, 这些成员函数可以访问自己的成员变量2.对成员变量的封装使用private关键字将成员变量私有化如果需要对外部提供访问方式, 写公有的get, set方法3.8 构造函数1.什么是构造函数构造函数是一个特殊的函数.函数名必须和类名一致.没有返回值类型.(不等于void,不能写任何返回值).可以写return,但是不能写return+值(尽量不要写).new关键字创建对象时自动调用2.应用场景如果我们希望一段代码在创建对象的时候执行, 就可以写在构造函数中通常我们使用构造函数对成员变量进行赋值3.构造函数和成员变量的执行顺序成员变量优先于构造函数先执行,因为通常使用构造函数都是对成员变量进行初始化,所以如果没有成员变量,构造函数是没有任何意义的.4.构造函数的重载和普通函数一样, 参数列表不同(类型不同,顺序不同,个数不同)即可.重载只与参数列表有关5.构造函数的调用在创建对象时自动调用.在构造函数的第一条语句可以使用"this(被调用的构造函数的实际参数)"的形式调用该类其他构造函数.6.自动生成构造函数在一个类中构造函数是一定存在的.因为在一个类中如果没有写任何的构造函数, 编译时也会自动生成一个无参的构造函数, 里面什么代码都没有.如果写了任何一个构造函数, 那么就不会有自动生成的了注意: 我们在类中只写了一个有参构造函数的时候,这个类就不能使用无参的构造函数创建对象了7.构造函数的访问权限通常构造函数的访问权限都是公有的, 因为构造函数就是为了让别人创建对象时调用的个别情况下在定义类时不希望外部创建对象, 这时可以使用private修饰构造函数, 例如: 单例设计模式(Singleton)3.9 成员代码块(构造代码块)1.什么是成员代码块在类中使用"{}"定义一段代码, 这段代码在创建对象的时候会自动运行2.成员代码块和构造函数的区别构造函数在创建对象的时候是N个选1个调用而代码块是一定执行构造函数可以传入参数代码块不能传入参数3.创建对象时内存中的工作顺序在内存中查找指定的类, 如果没有就加载类, 有则直接引用在内存中开辟一块空间, 将成员变量初始化为默认值, 0和null按照类代码从上到下的顺序, 执行代码块或者成员变量赋值执行构造函数中的代码4.在方法中也可以写代码块(方法代码块),但是不常用3.10成员变量和局部变量1.成员变量在类中定义的变量,(Field),在整个类都可以访问(用于描述着一类事物的共有特征).成员变量随着对象的建立而建立,存在于对象所在的堆内存中.成员变量有默认初始值(0/false/null)2.局部变量在方法/语句中定义的变量(Local Variable),存在于栈内存中.作用范围一结束,变量的空间会自动释放.局部变量是没有初始值的.3.同名问题在同一个作用域中成员变量不能重复, 局部变量也不能重复但是成员变量和局部变量可以同名, 他们互相不冲突4.访问问题在局部变量和成员变量同名的时候, 如果直接用变量名访问一个变量, 那么是先找局部变量, 如果不存在才找成员变量这时如果不想找局部变量, 直接找成员变量, 应该用"this.变量名"3.11 this关键字1.构造函数中"this(参数)"形式可以在构造函数的第一条语句中调用其他的构造函数"this.成员名"形式可以调用当前对象的成员2.普通函数中this用在普通的函数中, 可以代表调用当前函数的对象哪个对象调用this所在的函数,this就代表那个对象.3.内部类中可以使用外部类名.this.成员来访问外部类的成员.3.12静态(static)变量1.什么是静态变量用static修饰的成员变量就是静态变量(随着类的加载而加载)优先于所有非静态成员及成员代码块.2.静态变量和普通变量有什么不同静态变量在类加载后就初始化, 不用创建对象可以直接使用.静态变量被类的所有对象共享(在共享区), 通过一个对象改变, 所有对象都改变.静态变量可以使用"类名.变量名"形式访问, Java推荐使用这种方式, 而不是通过对象访问.3.类在什么时候加载类在第一次使用的时候加载例如: 创建对象, 使用静态变量, 使用静态方法定义变量的时候不加载类.4.静态变量在什么时候使用在定义一个类的时候, 如果希望这个类的所有对象共享一个数据时, 就可以使用静态成员变量.3.13静态(staitc)方法1.什么是静态方法用static修饰的方法就是静态方法静态方法类加载后可以直接运行可以使用"类名.方法名"调用2.什么时候使用静态方法如果一个方法没有访问任何外部的非静态成员, 那么就可以定义为static.这样在调用的时候不用创建对象即可使用, 给人提供方便, 并且效率更高.3. 静态方法使用的注意事项1. 静态方法不能直接访问方法外非静态成员.因为静态方法是随着类的加载而加载的,而非静态成员只有在对象创建才会加载.因此,当静态方法访问方法外非静态成员,对象不一定被创建,所以不能直接访问,除非在静态方法中创建本类对象,才可以访问,方法外静态成员.2. 与静态方法不能直接访问方法外非静态成员相反,非静态方法是可以访问静态成员的,因为,对象被创建了,这个类一定被加载到内存中,所以可以访问.3. 因为静态优先于对象存在,所以在静态方法中是不能出现this,super这两个关键字,道理很简单,静态被加载时还没有对象,而这两个关键字都和对象有关,所以不能使用.4. 静态的利与弊静态好处:1. 如果一个类里的某一个成员变量,他的所有需要共同使用它,没必要每一个对象都存储一份,可以将成员变量设为static,系统将进行单独空间(方法区/静态区) 存储,节省内存空间.2. 静态的成员可以直接被类名调用,使用简单.静态弊端:1. 因为静态是随着类加载而加载的的,所以其生命周期是和类同存亡的.所以生命周期很长,比较浪费内存空间.2. 因为静态只能访问静态,所以访问有一定的局限性.3. 因为主函数是静态的,所以用主函数调用的方法再不创建对象的情况下,只能都是静态的.3.14静态代码块1. 什么是静态代码块用static修饰的代码块类加载后直接运行, 只能执行一次(因为类只会加载一次),如果在一个类中有主函数,他是优先于主函数运行的.不能访问外部非静态成员2. 什么时候用静态代码块在定义一个类的时候, 如果希望某一段代码在别人使用这个类的时候就执行, 那么就可以写在静态代码块中.用于给类初始化.3.15单例设计模式设计模式:解决某一类问题最行之有效的方法.单例设计模式:让一个类只能创建一个对象.懒汉式和饿汉式饿汉式步骤:1.私有化构造函数.2.创建一个对象,并私有(防止类外改变对象内部内容).3.创建一个公有的,静态的方法,返回本类对象,使类外获取本类对象.懒汉式步骤:1.私有化构造函数.2.创建一个对象引用,并私有(防止类外改变对象内部内容).3.创建一个公有的,静态的方法,判断是否创建了一个对象如果创建了,返回本类对象, 如果没有创建,创建一个对象返回,使类外获取本类对象.3.16继承1.什么是继承定义一个类, 使用extends关键字可以继承另一个类, 得到父类的所有非私有属性和方法.2.继承的特点Java只支持单继承, 不支持多继承, 但可以多重继承.一个父类可以有多个子类, 但一个子类只有一个父类.3.java改良多继承的原因?提高代码的安全性,如果一个子类继承多个父类,而这多个父类中有同名的方法,子类要去访问的话,就不知道要访问哪一个方法了.降低了安全性..4.子类对象创建的过程子类对象之所以能调用父类的方法, 是因为在创建子类对象的时候, 其内部创建了一个父类对象.在new一个对象时,会先去子类构造函数,中寻找super()(如果没有显示指定父类构造函数)然后创建父类,然后再回到子类中创建对象.调用子类的方法时, 虚拟机会先在子类中查找是否包含该方法, 如果没有则找父类.在调用子类构造函数的时候, 一定会使用"super(参数)"形式调用父类构造函数创建父类对象.子类中必须要有一个构造函数含有super调用父类构造函数..super和this类似, 都是必须在构造函数的第一条语句使用如果构造函数写了this, 那么则不能写super, 反之亦然如果没写this也没写super, 默认会自动调用父类无参的构造函数5.方法覆盖(重写)覆盖可以让子类将从父类继承来的方法进行扩展,提高代码复用性,减少冗余.覆盖时子父类的方法名子必须相同, 包括返回值,参数列表,并且子类的权限必须大于或等于父类.只能覆盖非私有方法.6.重载(Overload)和重写(Override)的区别:重载:名字相同,参数列表不同只与参数列表相同.重写:子父类的方法名子必须相同, 包括返回值,参数列表,子类的权限必须大于或等于父类.(如果父类返回值是一个类,子类返回值可以是和父类相同的类或其子类).7.向上转型子类可以当作父类使用, 因为父类的功能子类都有Fu f = new Zi();如果一个方法要求传入一个父类类型对象, 我们也可以传入一个子类对象8.强制类型转换在子类当作父类来用时, 不能调用子类特有的成员.如果一定要调用, 需要把父类类型强转回子类类型.这种转换叫强制类型转换, 在编译时不论类型是否匹配都不会报错, 为了程序安全, 通常在转换之前使用instanceof进行判断.3.17Object类及其中常用方法1.什么是Object类Object类是Java中所有类的父类, 如果定义一个类不继承任何类, 默认继承ObjectObject类中的方法会被所有的类继承2.finalize任何对象在成为垃圾被销毁之前, 都会调用finalize 方法Object类中的finalize方法是空的, 什么都没有当我们希望在对象被销毁之前执行一段代码, 就可以在类中重写finalize方法, 把要执行的代码写在方法中.3.toStringtoString方法可以将一个对象转为字符串表示形式Object类中的toString方法返回的是"类名@内存地址"当我们希望调用toString时返回成员变量的值, 就可以重写该方法调用System.out.println()方法时会自动打印对象toString的返回值4.equalsequals方法是用来比较两个对象的Object类中equals方法默认比较的是对象的地址如果我们希望比较两个对象的属性, 那么可以重写equals方法, 在方法内比较所有的属性在比较字符串时如果希望比较两个字符串的内容, 就需要使用equals, String类是重写了equals的3.18 组合设计模式1.什么是组合设计模式在我们定义一个类的时, 如果需要使用另外一个类的方法, 就可以用组合设计模式.2.组合设计模式的写法在类中定义一个被组合类型的成员变量通过构造函数组合一个对象, 用成员变量引用在方法中使用成员变量调用被组合对象的方法3.组合设计模式和继承的区别不占用继承的位置, 当前类组合一个类之后还能继承其他类组合设计模式组合的类不能当作被组合的类使用3.19 多态1.多态的体现父类引用指向子类对象.(父类的引用可以接受自己的子类).2.多态的前提类与类之间必须有关系,要么继承,要么实现.子类与父类存在覆盖,因为在不强转的情况下,父类,不能访问子类特有的方法.3.多态的好处提高代码扩展性.4多态的弊端虽然提高了扩展性,但是只能使用父类父类引用访问父类成员(共有成员),为了能访问子类特有方法,父类的引用必须转成子类类型(向下转型).3.20 抽象1.什么是抽象类用abstract修饰的类就是抽象类, 抽象类中可以定义抽象方法2.什么是抽象方法用abstract修饰的方法就是抽象方法, 抽象方法在子类中必须全部重写3.什么时候用抽象类和抽象方法在我们定义类的时候, 如果多个类有相同的方法, 那么就应该把这些方法抽取到父类中定义完全相同的方法直接在父类中定义并实现, 如果只有方法签名(无方法体)一样而实现不同, 那么就可以在父类中定义抽象方法这样别人看到父类的时候就知道子类都有什么功能了, 方便他人阅读我们的代码, 也更好的支持了多态.4.抽象类细节有抽象方法的类必须声明为抽象类, 抽象类可以没有抽象方法抽象类不能创建对象子类继承抽象类时必须重写所有的抽象方法3.21 final修饰符1. final代表最终的, 可以用来修饰类, 方法, 变量.2. 被final修饰后的特点final的类不能被继承final的方法不能被重写final的变量只能赋值一次,在程序运行结束前,会一直存在与内存中.如果内部类在局部位置上,只能访问该局部中被final 修饰的变量.被final修饰的形参,第一次赋值是在调用它所在的函数时,不能再次赋值了.被final修饰的引用类型变量,不能在指向其他对象,但是他第一次指向的对象中的内容是可以改变的.final 只是修饰了引用.public static final 修饰的变量时全局变量,可以使用类名调用,名字全部大写3.22模板设计模式1.什么是模板设计模式在编程的过程当中, 如果经常要做一些类似的事, 其中某些步骤相同, 有些步骤不同, 这是就可以使用模板设计模式2.怎么使用模板设计模式定义一个抽象类定义一个final的方法在方法中写出每次相同的步骤, 不同的步骤写成抽象方法, 调用抽象方法每次实现不同的步骤时, 定义子类继承抽象类, 重写抽象方法即可, 相同的步骤无需重写直接调用final方法3.23接口1.什么是接口接口是一种特殊的抽象类2.接口和抽象类的区别抽象类用abstract class定义, 接口用interface定义抽象类中可以有不抽象的方法, 接口中所有方法都是抽象的抽象类用extends继承, 接口用implements实现抽象类可以继承抽象类, 接口可以继承接口抽象可以继承接口,接口不能继承抽象因为抽象类里面有可能会有非抽象方法..抽象类中的方法没有默认修饰符, 接口中的方法默认是public abstract修饰的抽象类中的成员变量没有默认修饰符, 接口中的成员变量默认是public static final 修饰的一个类只能继承一个抽象类, 一个类可以实现多个接口3.什么时候用抽象类, 什么时候用接口能用接口的时候就不用抽象类(没有任何不抽象的方法), 因为接口不占用继承位置如果需要定义不抽象的方法, 那么就必须使用抽象类.3.24 策略设计模式定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。
Java基础知识总结(超详细整理)Java语⾔的特点1.⾯向对象⾯向对象(OOP)就是Java语⾔的基础,也是Java语⾔的重要特性。
⾯向对象的概念:⽣活中的⼀切事物都可以被称之为对象,⽣活中随处可见的事物就是⼀个对象,我们可以将这些事物的状态特征(属性)以及⾏为特征(⽅法)提取并出来,并以固定的形式表⽰。
2.简单好⽤Java语⾔是由C和C++演变⽽来的,它省略了C语⾔中所有的难以理解、容易混淆的特性(⽐如指针),变得更加严谨、简洁、易使⽤。
3.健壮性Java的安全检查机制,将许多程序中的错误扼杀在摇蓝之中。
另外,在Java语⾔中还具备了许多保证程序稳定、健壮的特性(强类型机制、异常处理、垃圾的⾃动收集等),有效地减少了错误,使得Java应⽤程序更加健壮。
4.安全性Java通常被⽤在⽹络环境中,为此,Java提供了⼀个安全机制以防恶意代码的攻击,从⽽可以提⾼系统的安全性。
5.平台⽆关性Java平台⽆关性由Java 虚拟机实现,Java软件可以不受计算机硬件和操作系统的约束⽽在任意计算机环境下正常运⾏。
6.⽀持多线程在C++ 语⾔没有内置的多线程机制,因此必须调⽤操作系统的多线程功能来进⾏多线程程序设计,⽽ Java 语⾔却提供了多线程⽀持。
多线程机制使应⽤程序在同⼀时间并⾏执⾏多项任务,该机制使得程序能够具有更好的交互性、实时性。
7.分布式(⽀持⽹络编程)Java语⾔具有强⼤的、易于使⽤的⽹络能⼒,⾮常适合开发分布式计算的程序。
java中提供了⽹络应⽤编程接⼝(),使得我们可以通过URL、Socket等远程访问对象。
8.编译与解释共存Java语法基础标识符: ⽤来标识类名、对象名、变量名、⽅法名、类型名、数组名、⽂件名的有效字符序列。
合法的标识符:由字母、数字、下划线“_”、美元符号“$”或者“¥”组成,并且⾸字符不能是数字。
不能把java关键字和保留字作为标识符。
标识符对⼤⼩写敏感。
关键字:Java语⾔中已经赋予了特定含义的保留字: const、goto,Java版本中尚未使⽤,但以后版本可能会作为关键字使⽤变量:程序运⾏期间可以被改变的量。
JAVA知识点总结1.JAVA的特点:○1简单易用、完全面向对象;○2与平台无关性、可扩展性强;○3可移植性高、支持分布式编程;○4健壮、安全可靠并性能优异;○5支持多线程开发技术;○6支持动态开发。
2.JVM:Java虚拟机(JVM是Java实现跨平台的基础)。
Java的源程序(*.java)编译(命令:java+文件名.java)Java字节码(*.class编译时自动形成,与源程序名一致) 运行(命令:java+源程序的文件名) JVM(Windows、Linux)开发工具,Javac及基础核心类JDK运行环境,Java及基础核心类3.编写第一个Java程序:Java源文件扩展名为:”.java”一个源文件中最好只有一个java类,但是可以包含多个类public修饰的类,文件名与类名必须一致(包括大小写)被运行的类中需要有一个方法:public static void main(String[ ] args){}一个源文件中最多有一个public修饰的类例如:public class Test{public static void main(String args[]){System.out.println(“这个编写的第一个java程序!!!”);}}在运行程序之前先配置环境变量:path变量值为:JDK安装目录下\bin;classpath变量值为:JDK安装目录下\lib; 或 .;JDK安装目录下\lib\tools.jar 在dos命令窗口中输入以下命令进行运行:编译命令:javac Test.java运行命令:java Test生成文档命令:javadoc Test.java4.Java编程规范A、命名规定包:包名应该是小写的名词。
如:package shipping.objects类:类名应该是名词,大小写混合,每个单词的首字母大写。
如:class AccountBook接口:接口名的大小写应该与类名一样。
Java必备基础知识点(超全)Java基础1、简述Java的基本历史java起源于SUN公司的⼀个GREEN的项⽬,其原先⽬的是:为家⽤消费电⼦产品发送⼀个信息的分布式代码系统,通过发送信息控制电视机、冰箱等2、简单写出Java特点,写出5个以上,越多越好简单的、⾯向对象的、分布式的、安全的、稳定的、与平台⽆关的、可解释的、多线的、动态的语⾔。
3、什么是Java?JAVA:⼀种编程语⾔⼀种开发环境⼀种应⽤环境⼀种部署环境4、请写出Java的版本分类,以及每种版本的应⽤⽅向三种版本:JME:是⾯向内存有限的移动终端. 为消费性产品设计的;JSE:是SUN公司针对桌⾯开发和低端商务计算⽅案开发的版本。
为笔记本电脑、PC机设计的;JEE:是⼀种利⽤JAVA 2平台来简化企业解决⽅案的开发、部署和管理相关的复杂问题的体系结构。
为企业级的、服务器端的⾼端应⽤⽽设计的;5、描述Java技术的主要特性java虚拟机垃圾回收代码安全性如果你想学习Java可以来这个群,⾸先是⼆⼆零,中间是⼀四⼆,最后是九零六,⾥⾯有⼤量的学习资料可以下载。
6、描述 Java虚拟机的功能(1)通过 ClassLoader 寻找和装载 class ⽂件(2)解释字节码成为指令并执⾏,提供 class ⽂件的运⾏环境(3)进⾏运⾏期间垃圾回收(4)提供与硬件交互的平台7、简述Java代码安全性(1)编译时的错误检验(2)类装载检查,把本机上的类和⽹络资源类相分离,在调⼊类的时候进⾏检查,因⽽可以限制任何“特洛伊⽊马”的应⽤(3)字节码校验(4)沙箱机制,限定访问权限8、描述Java垃圾回收机制Java 编程语⾔解除了程序员释放内存的责任。
它可提供⼀种系统级线程以跟踪每⼀次内存的分配情况。
在 Java 虚拟机的空闲周期,垃圾收集线程检查并释放那些可被释放的内存。
垃圾收集在 Java 技术程序的⽣命周期中⾃动进⾏,它解除了释放内存的要求,这样能够有效避免内存漏洞和内存泄露(内存泄露就是程序运⾏期间,所占⽤的内存⼀直往上涨,很容易造成系统资源耗尽⽽降低性能或崩溃。
1. 下载JDK(Java Development Kit,Java开发包)2. JRE(Java Runtime Environment,Java运行时环境)3. JDK包含了JRE。
4. 关于Java的版本:JDK 1.4JDK 1.5 == JDK 5.0, tiger (老虎)JDK 1.6 == JDK 6.0, mustang(野马)5.我们的课程讲的是JDK 1.6。
6.配置环境变量。
要配置两个环境变量1)path:指定到jdk安装目录的bin目录下2)classpath:值为.,表示当前目录7.如何查看环境变量:在命令行输入set path命令。
8.编写Java程序要使用纯文本编辑器,比如notepad,editplus,ultraedit。
9. Java源文件的后缀名必须是java。
10.Java程序的开发步骤1)编写Java源代码(source code),存储到后缀名为java的文件中(源文件,source file)。
2)使用javac命令编译java源文件:javac HelloWorld.java。
编译之后会生成一个后缀名为class的文件(字节码文件,bytecode)。
然后通过执行字节码文件实现跨平台的运行。
(Write once, Run anywhere,编写一次,到处运行)3)执行。
执行使用的命令是java,方式是:java HelloWorld(注意,不要包含.class后缀名) 11. 如果使用了public,那么源文件名需要与类名保持一致;如果没有使用public,那么源文件名与类名可以不一致。
12.注释。
Java中的注释分为三种。
1)单行注释//这是注释,Java编译器会将//后面的所有内容全部忽略掉,注释是给开发者看的,不是给Java编译器看的。
2)多行注释。
/*与*/之间的所有内容都会被Java编译器忽略掉。
多行注释不能嵌套。
/*这是多行注释/*这是多行注释*/*/上面这种多行注释方式是错误的。
3)另一种多行注释/***/13. 变量与常量。
变量就是可以变化的量,常量是不可以变化的量。
比如数字5就是一个常量,因为它无法再改变了。
变量:要想使用变量,必须先定义变量。
如何定义变量?类型变量名; //变量的定义变量名=具体值; //变量的赋值将上面两步操作合并为一步:类型变量名= 具体值;int a = 100; //表示定义了一个整形变量a,并且将100赋给a类型:Java中一共有两大部分类型:第一种叫做原生数据类型;第二种叫做引用类型(对象类型)。
14 原生数据类型(基本数据类型)。
Java中一共有8种原生数据类型。
1)整型:用int表示。
2)字节:用byte表示。
3)短整型:用short表示。
4)长整型:用long表示。
5)字符类型:用char表示。
仅表示一个字符,比如字母a,汉字张等,用单引号包围。
6)单精度浮点型:用float表示。
7)双精度浮点型:用double表示。
所谓浮点型,其实就是小数,或者叫做实数。
8)布尔类型:用boolean表示,该类型一共只有两个值:true与false。
true表示真,false 表示假。
15.强制类型转换,将表示范围大的值转换为表示范围小的类型的值。
float a = (float)1.2;浮点数的默认类型是double,1.2是double类型,它无法直接赋值给表达范围更小的float 类型,必须要经过强制类型转换,强制类型转换的语法是:类型变量名= (类型)变量值;16. Java中的变量在使用前必须要定义,而且只能定义一次。
如下代码是错误的int a = 100;int a = 200;因为变量a定义了两次,造成重复定义。
如下代码也是错误的a = 100;System.out.println(a);因为变量a没有定义。
如何同时定义多个变量?变量类型变量名1, 变量名2,…….,变量名n;如:int a, b, c;要想使用变量,首先需要定义,然后必须赋值。
如下代码是错误的,因为变量a并没有赋值。
int a;System.out.println(a);17. 关于变量名的命名约定,以字母,下划线,或者$开头,后接字母、下划线、$以及数字,没有长度限制。
18. 关于强制类型转换的注意事项:当把表示范围小的类型赋给表示范围大的类型,可以直接赋值,无需强制类型转换;但当把表示范围大的类型转换为表示范围小的类型,则必须要进行强制类型转换。
19.int a = 8;int b = a / 3;如果无法整除,那么将小数点后的部分全部舍去,只保留整数部分20.int a = 1;int b = a++;表示先将a的值赋给b,然后a再加一,结果是a为2,b为1。
int a = 1;int b = ++a;表示先将a的值加一,然后讲加完的结果赋给b,结果是a为2,b为2--的道理与++类似第二节类型取决于a与b中表示范围最大的类型,由于double类型表示的数据范围要比int类型大,因此a与b相除的结果类型就是double,所以需要将变量c声明为double类型。
2. 运算优先级。
与数学上的运算是一样的,都是先乘除,后加减;可以使用小3.关系运算符。
关系运算的结果是个boolean类型的值。
4.布尔逻辑运算符。
操作数必须是布尔类型的数据。
1)逻辑与:&&,操作数是两个,只有两个操作数都为true,结果才为true,否则结果为false。
2)逻辑或:||,操作数是两个,如果两个操作数中有一个为真,结果就为真,否则结果为假。
5. 关于布尔运算符的短路特性。
1)逻辑与&&:如果第一个操作数为假,则不再进行第二个操作数的判断(因为结果已经确定为假);如果第一个操作数为真,则继续进行第二个操作数的判断。
2)逻辑或||:如果第一个操作数为真,则不再进行第二个操作数的判断(因为结果已经确定为真);如果第一个操作数为假,则继续进行第二个操作数的判断。
6.条件运算符。
条件运算符是个三元表达式。
type d = a ? b : c;7. 控制结构。
1)if语句第一种方式if(布尔表达式){//程序代码}第二种方式if(布尔表达式){//程序代码}else{//程序代码}第三种方式if(布尔表达式){//程序代码}else if (布尔表达式){//程序代码}else if (表达式){//程序代码}...else{//程序代码}2) while语句:while是一种循环结构while(布尔表达式){//程序代码}3) do…while语句:do…while语句也是一种循环结构do{//程序代码}while(布尔表达式);关于while与do…while的比较与分析:1)while语句先判断布尔表达式,然后再执行程序代码;do…while语句先执行程序代码,然后再判断布尔表达式。
2)如果布尔表达式第一次判断的结果为false,那么while语句中的代码一次也不执行;而do…while语句中的代码会执行一次。
3)如果布尔表达式第一次判断的结果为true,那么while语句等价于do…while 语句。
4) switch…case:作用类似于if…else if…else if…else结构switch(变量名){case 常量1://程序代码break;case 常量2://程序代码break;case 常量3://程序代码break;....default://程序代码}switch语句中的变量类型只能是byte, short, int以及char。
5) for语句:for语句也是一种循环结构,并且是使用最多的一种循环结构。
for(变量初始化; 条件判断; 步进){//程序代码}1.进行变量初始化。
2.执行条件判断:如果条件判断的结果为假,则退出for循环,不再执行循环体中的内容;如果条件判断为真,则执行循环体中的内容。
3.执行步进。
4.重复步骤28. 求模运算符:用%表示,表示求出两个整型相除的余数。
int a = 6 % 5a的结果就是1第三节1.break通常用在循环语句中,用于跳出循环语句,执行循环下面的语句。
2.continue通常用在循环语句中,用于跳出本次循环,开始下一次循环的执行。
3.面向对象的程序设计:Object-Oriented Programming (OOP)。
4.类(class):可以将类看做是数据(通常使用名词表示,叫做成员变量或属性)与操纵数据的方法(通常使用动词表示,方法叫做method)的结合体。
5.如何定义类?修饰符class 类的名字{//类的内容(包含了属性与方法)}6.方法。
如何定义方法?修饰符返回类型方法名称([参数1, 参数2, 参数3……]){//方法体}7.main方法是整个Java程序的入口点,如果类的定义中没有main方法,则程序将无法执行。
8.方法的定义不能嵌套,不能在一个方法中定义另外一个方法。
方法只能定义在类中。
9.关于方法的执行:首先需要定义方法,接下来就可以使用方法(调用方法),当方法调用完毕之后,方法可以返回值。
方法到底是否返回值是由方法的定义决定的。
10.对象(Object),什么是对象?对象是类的一种实例化表示。
对象与类的关系是非常紧密的。
类是一种抽象的概念,对象是一种具体的概念;对于现实世界中:人(Person)就是一种抽象的概念;而具体的人(比如张三,李四,王五)则是具体的概念,对应于面向对象程序设计,人就可以看作是类,而张三这个具体的人就可以看作是对象。
11.如何生成对象?通过类来生成对象(通常使用new关键字来生成对象)。
public class Person{}类名变量名= new类名();Person person = new Person();Person person2 = new Person();Person person3 = new Person();12. 方法调用需要通过对象来完成。
方法调用的形式为:对象变量.方法名([参数值1,参数值2,参数值3…..])13. 关于方法的注意事项:1)在方法定义中,方法的返回类型与return后面的变量或者常量的类型保持一致。
2)在方法调用时,给方法传递的参数需要与方法定义时的参数保持一致(参数个数一致,参数类型一致)3)方法定义时的返回类型与接收方法返回值的变量类型保持一致。
14.public int add(int a , int b){int c = a + b;return c;方法定义时的参数叫做形式参数int result = test.add(1, 2);调用方法时所赋予的具体值叫做实际参数。
15. 关键字void表示方法不返回值。