【Jsp精品源码栏目提醒】:网学会员在Jsp精品源码频道为大家收集整理了“JavaSE_学习笔记整理 - 其它资料“提供大家参考,希望对大家有所帮助!
第一章 Java 基础一、java 常用命令 1.javac:Java 编译器,用来将 java 程序编译成 bytecode。
javac HelloWorld.java 2.java:Java 解释器,执行已经转换成 bytecode 的 java 应用程序运行 class 文件 java HelloWorld 3.javadoc:文档生成器创建 HTML 文件 javadoc HelloWorld.java 4.javap 反编译:将类文件(.class)还原回方法和变量(通过.class 文件可以看到该类的结构) javap HelloWorld 5.-classpath java –classpath 路径 java 类class 文件 6.java 和 javaw 的区别: 两个应用程序都能运行你的程序 , (.class 文件) 并且非常相似,但是有一个重要的区别,java 通过控制台运行,javaw 则不是(效率高)二、环境变量配置: 1.Classpath: 告诉类装载器到哪里去寻找三方提供的类和用户定义的类 .JAVA_HOMElibdt.jarJAVA_HOMElibtools.jar 2.Java_home: jdk 变量 C:Program FilesJavajdk1.6.0_10 3.Path: Windows 操作系统用来寻找可执行文件的路径 C:Program FilesJavajdk1.6.0_10bin三、java 三大平台 1.SEJ2SEstandard edition标准版,面向桌面运用程序开发(Client/Server 结构) 、也是后面 EE 和 ME 的基础 2.EEJ2EEenterprise edition企业级应用程序开发(Brower/Service 结构) .
jsp 3.MEJ2MEmicro edition主要用于移动设备、 嵌入式设备上的 java 应用程序(手机、 PDA)四、JDKJREJVM 之间的关系 1.JDKJava Development Kit已经成为使用最广泛的 Java SDK(Software Development Kit即软件开发工具包 2.JDK 是整个 Java 的核心,包括了 Java(JRE)运行环境,包含(JVM)Java 工具和 Java基础的类库 3.JDK【JREJVM】 第二章 Java 基础_数据类型一、命名规范: 基本原则见名知意 驼峰式命名:userName userSex 类名首字母大写 变量、方法名开头字母小写 常量所有字母大写字母与字母之间_下划线连接 包名全部小写 工程名首字母大写二、注释 1. // 行 针对单行语句 2. / 块 多条语句 / 3. / 文档性注释(javadoc 形成 Html 文档时可见) /三、进制间转换 二进制 158421 0/1 00001111 十进制 1584218715 09 八进制 1584218715 07 0 开头 017 十六进制 1584218715 09af1015 0X/0x 开头 0xf四、所有基本类型的关键词都是小写的总结如下: 数据类型 字节数 所占位数 数的范围 boolean 1 8 true false char 2 16 0 ~65535 byte 1 8 -27~27-1 short 2 16 -215~215-1 int 4 32 -231~231-1 long 8 64 -263~263-1 float 4 32 3.4e-038 ~3.4e+038 double 8 64 1.7e-308 ~1.7e+3082.转换从低级到高级: 低--------------------------------------------gt高 byte short char gt int gt long gt float gt double 第五章 Java 基础_数组一、一维数组 1.数组变量的声明 int scores//scores 存放 int 类型的数组 注:声明数组变量的时候,不能指定数组长度 int 10 scores//非法,编译不通过 因为:java 在数组的定义中并不为数组元素分配内存,因此中不用指出数组中元素的个数,即数组长度,而且这时候是不能访问数组的任何元素的,必须经过初始化后,才能应用数组的元素 2.初始化,为数组的每一个元素设置初始值 A.静态初始化: int scores98962030//常量区 int scores scores1234//非法 B.动态初始化: int scoresnew int100 forint i0ilt100i scoresii int xnew int123456798 int scoresnew intx//x 是能够隐式转换成 int int scoresnew int100//创建一个 int 类型数组,存放 100 个 int 类型的数据 C.new 执行过程: 1在堆中为数组分配内存空间(数据类型数组长度 4100400 字节) 2为数组中每一个元素赋予其数据类型的初始值 D.访问数组元素 1数组索引0---gtx.length-1 2数组长度x.length 3数组越界 java.lang.ArrayIndexOutOfBoundsException char 存放 26 个字母 int x98223122322//找出最大的数并输出二、二维数组 // 某宾馆有 3 层楼,第一层 4 个房间,第二层 3 个房间,第三层 5 个房间 // 为每一个房间编号,并输出 int hotel new int3 注意,创建多维数组的时候,必须按照从低维到高维的顺序创建每一维数组(inthotelnew int3 //非法) hotel0 new int 101 102 103 104 hotel1 new int 201 202 203 hotel2 new int 301 302 303 304 305 hotel.length--一维数组的长度 hotel0.length--每一个元素(一维数组)的长度 forint i0 ilthotel.length i System.out.printlnquot第quoti1quot层房间编排:quot forint j0 jlthoteli.length j System.out.printhotelijquotquot System.out.printlnquotquot 三、多维数组 1.多维数组都被看作数组的数组 比如二维数组是一个特殊的一维数组,其每一个元素又是一个一维数组 三维数组是一个特殊的一维数组,其每一个元素又是一个二维数组..递归四、 置前、置后 1.一般来说这是不同语言之间竞争的结果,第二种方法在 c 语言等面向过程的语言中被广泛的使用, 鉴于许多程序员在学习 java 或者 c时候,都具有部分 c 的基础,所以这种数组声明的方式被保留了下来。
2.不过对于 java 和 C这类面向对象的语言,都推荐使用第一种命名方式,原因很简单, 第一,java 把数组当成是对象处理,将数组统一的继承自 Array 这个类。
第二,方括号表示是数组类型,而写在后方容易与变量的名称相互混淆,鉴于一般程序设计语言的变量的定义结构为: 变量类型 变量名称 赋值运算符 变量名称或者常量参数; 因此采用第一种更有助于理解数组是一种引用的数据类型, 而与基本数据类型相互区分。
第六章 类和对象基础一、构造方法 构造方法应包含的内容: 定义一些初值或内存配置工作; 一个类可以有多个构造方法重载,根据参数的不同决定执行哪一个; 如果程序中没有定义构造方法, 则创建实例时使用的是缺省构造方法,它是一个无内容的空方法 作用:new 构造函数,用来创建对象和初始化成员变量 无参构造 public XXX 有参构造 public XXXdouble xdouble ythis.xxthis.yy 如:Point 类 默认构造函数 public Point 用户自定义构造函数 public Pointdouble x double y this.x x this.y y 1 如果没有写构造函数,那么在创建对象的时候,默认会执行该类父类的无参构造(Object 的无参构造) 2 如果写了带参构造,而没写无参构造;那么此时该构造函数将覆盖父类无参构造,这时候在创建对象的时候你只能通过带参构造(所以这时候最好补上无参构造) 3 如果有返回值或者 void,那么这时候这个方法就不是我们真正意义上的构造函数,只是普通方法,只是方法名称特殊而已(不能用来创建对象)二、this this 指向自己的引用,即当前方法所在的对象。
它的一个主要作用是要将自己这个对象当作参数,传送给别的对象中的方法。
只能在构造方法或者实例方法内使用 this而在静态方法和静态代码块中不能使用 this关键字三、方法重载(overloaded)---gt原则: 同名且不同参参数类型、参数个数,跟返回值无关 方法重载即指同一个类内多个方法可以享有相同的名字。
但是这些方法的参数必须不同参数个数不同或参数类型不同。
1.同名(方法名相同) 2.不同参(参数类型、参数个数、参数顺序) 3.与其他无关(方法返回值、方法修饰符) 第七章 对象的创建和使用一、参数传递:引用传递与值传递 1.当方法被调用时,如有参数,参数须要实例化初始化即参数是具体的值 2.基本数据类型安值传递,引用数据类型安引用传递二、类变量与实例变量的区别 static 修饰变量 1.类变量在类加载时分配内存的 实例变量在创建对象时分配内存 2.类变量在程序退出时释放内存 实例变量在对象不存在实例变量就不存在了 3.类变量在内存中只有一个拷贝,被所有对象共享 实例变量为每个对象独有(可以在 )内存中有多个拷贝(一个对象一个),互不影响 4.类变量可以直接通过类名访问;实例变量必须通过对象访问 5.类变量可以在类的任何方法中访问,达到真正的全局变量(C 语言)概念实例变量只能在非静态方法中使用三、类方法与实例方法的区别 static 修饰方法 A 类方法:在静态方法中不能使用 this 关键字,因为静态方法不需要通过类的实例就会被调用,而 this 代表当前对象,类方法是在类加载时就存在而此时对象还不存在 也不能直接访问所属类的实例变量和实例方法, 但可以直接访问所属类的静态变量和静态方法。
------假设:可以访问非静态变量或者方法,那么又因为非静态变量或者方法是在创建对象时为对象创建的,但这时候(类加载的时候)对象根本就还没有创建; 所以,JVM 无法判定该变量或者方法是属于哪个对象的,因此 JVM 无法找到该变量或者方法 ------静态方法必须被实现(不依赖于类的具体实例,也不依赖于它的子类,必须自力更生、自己实现该方法,因此必须提供实现(即不能定义为抽象方法) ) ------main 方法为什么是 static? ------因为只要把 main 方法定义为 static,可以使得 JVM 只要加载 main 方法所在的类,那么就可以执行 main方法了,而无需先创建该类的实例 B 实例方法:可以直接访问所属类的静态变量、静态方法、实例变量、实例方法四、静态块 static System.out.println“Person 被加载了” 特点 a 静态块静态块中的所有 java 语句 在类被加载时执行 b 静态块一般只执行一次,如果有多个(按顺序执行) C 静态块可用于初始化类(给类的静态变量赋初值) static静态和 abstract抽象 是一对冤家,永远不能再一起使用。
五、 类加载时: 类加载时间:类加载只执行一遍,第一次执行 java 命令的时候! 1 类变量赋值 2 类方法分配入口地址 3 执行静态块 创建对象:new ClassObject 1 父类构造方法(super) 2 实例变量 3 实例方法 4 对象块 5 构造方法剩余语句六、垃圾回收 在 JVM 垃圾回收器来看,堆区中的每个对象都可能处于以下三种状态: 1.可触及状态:对象创建后,只要程序中还要引用变量在引用他,那么他始终处于可触及状态 2.可复活状态:当不再有引用变量引用该对象时,进入可复活状态;此时垃圾回收器会准备释放他占用的内存, 在释放之前, 会调用其他处于可复活状态的对象的 finalize方法,这些 finalize方法可能使该对象回到可触及状态。
3.不可触及状态:JVM 执行完所有可复活对象的 finalize方法后, 假如这些方法都没有使该对象进入可触及状态,那么该对象就进入不可触及状态; 只有当对象进入不可触及状态时,垃圾回收器才会真正回收它占用的资源。
七、finalize: 当垃圾回收器将要释放无用内存时, 先调用该对象的 finalize方法如果在程序终止之前,垃圾回收器都没有执行垃圾回收操作,那么该方法将始终不会执行。
特点: 1 垃圾回收器是否执行该方法或者何时执行该方法,都是不确定的 2 finalize方法可能使对象恢复到可触及状态 3 垃圾回收器在执行 finalize方法时,如果出了异常,垃圾回收器不会报异常,程序正常执行 例子: finalize //System.gc Thread.sleep3000 第八章 类的命名空间和访问权限一、包的定义:(package) 1 包的定义需放在源代码的第一句 2 Java 用文件系统目录来存储包,因此目录名和包名严格匹配(包层次也是在文件系统中严格反映出来的) 3 包名全部用小写二、包的导入:(import) 1.需要使用不同包中类的资源(类的方法或者属性)时,首先需要引入该类 import 包名.classname. import java.util.Scanner 或者 import java.util. 建议少用; 2.如果同时需要使用到某个同名不同包的类, 那么这时候不能用 import, 应该将该类的包结构写完整 //正确 com.tms.se07.CellPhone cellPhone07new com.tms.se07.CellPhone三、访问权限 1.有名包不能调用无名包中的类 2.访问权限 同一个类中 同包不同类 子类不同包 不同包- private ★ default ★ ★ protected ★ ★ ★ public ★ ★ ★ ★public: 任何其它类、对象只要可以看到这个类的话,那么它就可以访问该类的属性和方法(全局)protected : 同 一 类 , 同 一 包 可 以 使 用 。
不 同 包 的 类 要 使 用 , 必 须 是 该 类 的 子 类(受保护)private : 不 允 许 任 何 其 他 类 存 取 和 调 用 类 内 部 使 用 (私有) friendlydefault,前边没有修饰字的情况:在同一程序包中出现的类才可以直接使用它的数据和方法 (包-默认)四、封装( 封装将数据和处理数据的代码连接起来。
同时封装提供另一个重要属性:访问控制。
通过访问控制,可以阻止对象的滥用。
) 1.封装:将数据连同函数捆绑在一起,形成新的类型 通过对象的封装,实现了模块化和信息隐藏。
通过对类的成员施以一定的访问控制,实现了类中成员的信息隐藏 比如:对属性的私有化,对外只提供 get/set 方法,这样就外部类只能设值和获取值,而并不知道该类里面的结构,到底有哪些属性、方法 第九章 面向对象高级特性一、继承 1.继承性是面向对象程序设计语言的另一基本特征,通过继承可以实现代码的复用属性和方法的传承 继承而得到的类为子类,被继承的类为父类超类,父类包括所有直接或间接被继承的类。
子类可继承父类中的变量及方法也可定义其自身特有的变量及方法。
二、方法重写 1.什么是重写:子类中重新定义父类中已有的方法 2.重写原则: 1.同名且同参,即名称和参数严格一致,如果此时子类参数类型是父类的子类,表示子类中方法的重载(补充---------------1) 2.返回值(父类返回值类型相同或其子类) 3.访问权限不能更严格(gt) 如:父类是 public, 子类必须是 public ;父类是 private,子类可以是(private、protected、default、public) 4.例外(异常),不能抛出更多的例外三、方法重载四、final 关键字 1.修饰类: 表示该类是最终类,不能被继承不能有子类 2.修饰方法:表示该方法是最终方法,该方法不能被子类覆盖(重写) 3.修饰变量:表示变量的值在初始化之后就不能再改变,相当于定义了一个常量五、对象转型 1.上溯(向上(父类)转型): 将子类对象创建的引用赋值给父类对象Son 继承 Father---从父类对象去看子类---老虎是哺乳动物 Father fathernew Son 2 下溯(向下(子类)转型) : 将经过上溯的对象,再重新转换成该子类类型(不考虑哺乳类,去看待老虎)---从子类对象去看子类--具有哺乳动物特征的老虎 Son son(Son)father 3. 类型自动提升(上溯)和强制类型转换(下溯)的条件:创建对象的类之间存在继承关系 4. 上转型对象上溯的特点: 1.不能操作子类新增的成员变量和方法 2.可以操作子类继承的变量,也可操作子类继承或重写的方法 3.如果子类重写了父类的某个方法后,当对象的上转型对象调用这个方法时一定是调用了这个重写后的方法 4.不要将父类创建的对象和子类对象上转型对象混淆 5.可以将对象的上转型对象再强制转换到一个子类对象,这时,该子类对象又具备了子类所有属生和功能即下溯 6.不可以将父类创建的对象的引用赋值给子类声明的对象不能说”哺乳动物是老虎”六、多态 1.多态就是指父类的某个方法被多个子类重写时,可以各自产生自己的功能行为有自己的方法实现---特点 2.动态绑定:java 在运行时动态方法调用叫做后期绑定(late binding),根据具体引用的实例来决定调用的实例方法或者叫运行期绑定 3.静态绑定:编译期间进行的绑定静态绑定或者前期绑定七、抽象类:abstract 1.什么是抽象类:用 abstract 关键字来修饰一个类时,该类叫做抽象类 abstract class ClassName...... 2.抽象类的特点: 1.抽象类必须被继承即,抽象类不能被直接实例化,它只能作为其它类的超类,这一点与最终类(final 类)正好相反 2.抽象类中可以没有抽象方法,但有抽象方法的类,必须是抽象类 3.如果子类没有实现父类中所有抽象方法,那么该子类也必须是抽象类 4.抽象类不能定义成 final 类型【与普通类的区别:abstract 修饰、可能含有抽象方法、不能被实例化、不能是 final 修饰】八、抽象方法: 1.什么是抽象方法:用 abstract 来修饰一个方法时,该方法叫做抽象方法。
abstract returnType abstractMethod paramlist 2.抽象方法的特点: 1.抽象方法必须被重写 2.抽象方法只有声明,不能有实现(不能有) 3.定义了抽象方法的类必须是抽象类 4.没有构造抽象方法,构造方法不能被重写 5.抽象方法必须被重写,所以子类首先要能够访问或者看得到父类的抽象方法 即: 抽象方法不能定义成 private final 和 static 类型 如果子类在不同包,那么父类(抽象类)的抽象方法也不能是 default 修饰九、接口:Interface 1.什么是接口: 一组方法的定义和常量值的集合 2.接口作用: 1.通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系 2.通过接口可以指明多个类需要实现的方法 3.通过接口可以了解对象的交互界面,而不需了解对象所对应的类 3.接口的定义: public interface interfaceName extends SuperInterfaceList //常量定义和方法定义 4.接口的特点: 1.与类继承不同,一个接口可以继承多个父接口 2.一个 public 接口只能定义在同名的.java 文件中 3.接口中的方法和常量必须是 public 的默认,可以不写 only public static amp final arepermitted 5.接口的实现: 1.用 implements 子句来表示一个类使用某个接口。
2.类体中可以使用接口中定义的常量,而且必须实现接口中定义的所有方法 3.利用接口可实现多重继承,即一个类可以实现多个接口,在 implements 子句中用逗号分隔 4.接口的作用和抽象类相似,只定义原型,不直接定义方法的内容,内容有他的实现类去实现 6.理解接口: 1.接口只关心功能,并不关心功能的具体实现 2.接.