corejava+sql笔记

合集下载

sql必知必会读书笔记

sql必知必会读书笔记

sql必知必会读书笔记《SQL必知必会》是一本非常实用的SQL学习书籍,以下是我的读书笔记:1. SQL是什么?SQL(Structured Query Language)是一种用于管理关系型数据库的编程语言。

它可以用于创建、修改和删除数据表,以及查询、更新和删除数据。

2. SQL的基本语法SQL语句以分号结尾。

常用的SQL语句包括SELECT、INSERT、UPDATE、DELETE等。

其中,SELECT语句用于查询数据,INSERT语句用于插入数据,UPDATE语句用于更新数据,DELETE语句用于删除数据。

3. SELECT语句的基本结构SELECT语句的基本结构为:SELECT 列名FROM 表名WHERE 条件表达式。

其中,列名表示要查询的数据,表名表示要查询的表,条件表达式表示查询的条件。

4. WHERE子句WHERE子句用于指定查询条件,可以使用比较运算符(如=、<>、>、<、>=、<=)和逻辑运算符(如AND、OR、NOT)进行组合。

例如,查询年龄大于18岁的员工信息:SELECT * FROM employees WHERE age > 18;5. ORDER BY子句ORDER BY子句用于对查询结果进行排序,可以按照一个或多个列进行排序。

默认情况下,排序方式为升序(ASC),也可以使用DESC关键字进行降序排序。

例如,按照员工姓名升序排列:SELECT * FROM employees ORDER BY name ASC;6. GROUP BY子句GROUP BY子句用于将查询结果按照一个或多个列进行分组。

可以使用聚合函数(如COUNT、SUM、AVG、MAX、MIN)对每个分组进行计算。

例如,统计每个部门的平均工资:SELECT department, AVG(salary) FROM employees GROUP BY department;7. HAVING子句HAVING子句用于对分组后的结果进行筛选。

CoreJava总结

CoreJava总结

CoreJava总结第一篇:CoreJava总结Java概述一、JDK/JRE/JVMJDK:JAVA开发工具包,比JRE多了一些开发和调试的命令,比如javac、java等等。

JRE:JAVA运行环境JVM:JAVA虚拟机包含关系:JDK包含JRE,JRE包含JVM三、配置环境变量JAVA_HOME:JDK的安装路径CLASSPATH:类的搜索路径PATH:命令的搜索路径--右键我的计算机-->高级-->环境变量-->在系统变量或者用户变量上配置-->JAVA_HOME:当前机器上JDK的文件目录“C:Program FilesJavajdk1.6.0_05”CLASSPATH:类的搜索路径“.”当前目录Path:命令的搜索路径...;%JAVA_HOME%bin--开始-->运行-->cmd-->java验证是否配置成功二、注释三种:1、单行注释: //...2、多行注释: /*...*/3、文檔注释: /**......*/ 另一种多行注释,但是这种注释可以生成API文檔(HTML格式的)提取API文檔的命令:javadocjavadoc应用,提取说明文件javadoc XX.java-d 生成文文件路径比如:javadoc String.java-d.stringdoc在String.java所在的檔夹中便会生成一个stringdoc檔夹,里面是html格式的解释文檔顺便教下学生看API文檔三、标识符只能以字母,“_”,“$”符号开头,不能以数位开头支持汉字四、良好的编码习惯1、类的首字母要大写,如果有多个单词,每个单词首字母都要大写比如:HelloWorld2、接口名命名与类名一样3、方法名第一个单词小写,以后每个单词的首字母都大写比如:getName4、变量名的命名习惯和方法名的相同5、常量(不可改变的)的名字所有字母都大写,单词与单词之间用“_”连接比如:DRIVER_NAME6、包名所有字母都小写三、关键词(50个)自己命名变量名或者其它名字不能和关键词的一样true,false,null不是关键词,是字面值,同样不能把这些单词作为名字goto和const是保留字,并不应用于java开发,也不能作为其它名字使用其它语言中goto语句的用法(无条件跳转)java中的代替goto的是break loop;loop是个标号,标记一个循环,break loop就结束了这个循环数据类型和控制结构一、数据类型boolean 两个值true或者false,占8个二进制位byte8位整数short16位整数char16位的Unicode编码,有足够的空间保存非英文字符--'A':65,'a':97,'0':48int32位整数long64位整数float32位浮点型double 64位浮点型二、String类型:是一个类,而不是基本类型赋值的话就用双引号引起来,比如String a=“abc”;三、整型数据整型变数赋值int ia=0x55;//这种赋值是可以的,赋值为了一个16进制资料byte bb=0x771;//0x771已经超出了byte的取值范围,所以编译这句话会出错byte ba=(byte)0x771;//把0x771强制转换成bytelong la=1234567L;//给long类型的变量赋值四、浮点型数据1、赋值float fa=123.4F//后面加个Fdouble d=123.456D//后面的D跟不跟都可以类型转换:自动类型转换小范围---◊大范围Byte-◊ short-◊ int-◊ long-◊ float-◊ doubleChar-◊ int在表数范围内的常数可以自动转换强制类型转换五、垃圾回收1、如果某一个对象没有引用指向它了,那么这个对象就是个垃圾对象比如String s=new String(“...”);s=null;那被new出来的String对象就是一个垃圾数据了2、垃圾回收机制对于没有被引用的对象,java JVM会自动回收System.gc()提醒虚拟机进行垃圾回收,但只是提醒建议break和continue后面可以加下标,跳出循环和继续循环。

CoreJava笔记—基础部分

CoreJava笔记—基础部分

2010-7-23猛哥推荐技术网站CSDN IBM中国 J道 javaBBSJava语言的好处1、加速开发速度2、一次编写到处运行(跨平台,windows下的ext在linux,unix下不可执行)3、简化开发,降低开发难度4、对外没有指针(JVM是用C++实现的)Java属于复合型:先编译后解释。

JDK的环境变量配置Windows下在我的电脑☞系统属性☞高级☞环境变量配置JAVA_HOME 中配置的是java的安装目录Classpath中配置的是class文件的目录,一般配置,既可以配置jdk中的jar包进去(JDBC会自动配置),类库的路径(lib),”.”一般代表当前目录Path中配置的是可执行命令的路径(bin),path在windows系统变量中是有的,配path 时千万不要将原来的内容删除,在最前面配置。

linux下Java环境的配置Linux:/etc/.profile这是所有用户的全局文件主目录下的.bash_profile 这是当前用户的全局文件到当前用户的目录下,用vi .bash_profile在文件的最后加上以下内容(文件非空) export JAVA_HOME=某个目录(bin和lib的上层);expert PATH=某个目录/bin:$PATH;其中PATH绝对不能错,否则系统会崩溃export CLASSPATH=.:某个目录/lib;保存退出。

二、第一个程序体验步骤:1、vi xx.java2、编辑xx.java文件3、javac编译生成xx.class文件4、如编译通过,用java 包名.类名运行package day01;public class First{public static void main(String[] args){String name="wang";int age=25;System.out.println("my name is :"+name);System.out.println("my age is :"+age);}}编译运行:编译:javac -d . First.java //-d 代表生成目录,.代表当前目录,把目录生成到当前。

关于corejava的总结

关于corejava的总结

CoreJava总结1.构造方法的作用是实例化对象的时候给数据成员初始化,如果类中没有显示提供的构造方法,系统会提供默认的无参构造方法,如果有了其他构造方法,默认的构造方法不在提供。

2.内部类可以声明为static的,但此时就不能再使用外层封装类的非static的成员变量;3.非static的内部类中的成员不能声明为static的,只有在顶层或者static的内部类中才可声明static成员。

4.final修饰的方法,在子类中不能被重写。

5.可以定义一个数组通过Object超类的引用,例如Objecct 0bj = new float[20];还可以通过Object 创建一个线程,例如Object obj = new Thread(){public void run(){System.out.println(“sss”)}}; (thread)t.start();6.能够抛出的对象类型要是Throwable或是Throwable的子类,例如:Error\Exception\Throwable\RuntimeException但是Event和Object是不能抛出的。

7.子类重写:子类有和父类的方法名相同,但参数不同,不会出编译错误,认为是子类特有的方法,但是如果子类中的方法和父类的方法名,参数,访问权限,异常都相同,只有返回值类型不同会编译不过的。

8.实例方法只能通过调用对象来实现,类方法通过对象调用但是不建议这样调用,只能访问类变量,通过类调用的方法必须是静态的。

9.Java只支持单继承,一个类可以实现多个接口。

10.接口可以继承其他接口,但是接口中不能有private方法,final方法,不能有function实现。

11.在子类的构造方法中默认情况下有一句super(),来调用父类的构造方法。

12.sleep()是线程类(Thread)的方法,导致针对线程暂停执行指定的时间,给执行机会给其他线程,但是状态依然保持,到时候会自动恢复。

CoreJava笔记

CoreJava笔记

前言------------------------------------------------------------------------------------------------ 1一·基础知识-------------------------------------------------------------------------------------- 2二·定义,关键字和类型 -------------------------------------------------------------------- 2三·表达式和控制流--------------------------------------------------------------------------- 4四·数组------------------------------------------------------------------------------------------ 6五·对象和类------------------------------------------------------------------------------------ 8六·高级语言特性------------------------------------------------------------------------------- 12七·异常----------------------------------------------------------------------------------------- 27八·图形用户接口----------------------------------------------------------------------------- 30九·AWT(Abstract Window Toolkit)事件模型-------------------------------------- 30十·The AWT Component Library ---------------------------------------------------------- 30十一·JFC(Java Foundation Classes) --------------------------------------------------- 30十二·Applets ---------------------------------------------------------------------------------- 30十三·线程Thread ---------------------------------------------------------------------------- 30十四·标准I/O流与文件 -------------------------------------------------------------------- 34十五·网络编程-------------------------------------------------------------------------------- 38前言JAVA特点1) 简单(Java语法是C++语法的一个“纯净”版本);2) 可移植性(一次编译到处运行)3) 面向对象4) 分布式(Java把打开套接字连接等繁琐的网络任务变得非常容易)5) 健壮性(Java编译器会检查出很多其他语言在运行时刻才显示出来的错误;Java采用的指针模型可以消除重写内存和数据崩溃的可能)6) 多线程(多线程编程的简单性是Java成为流行的服务器端开发语言的主要原因之一)7)安全(用Java可以构建防病毒和防篡改的系统)9) 动态(Java可随意增加新的方法以及实例变量,而客户端却不需做任何的更改)10)体系结构中立(字节码与计算机体系结构无关,只要存在运行时系统,可在多种处理器上执行)运行原理先编译*.java文件――――>*.class文件运行*.class ――加载――> JVM(JA V A虚拟机)JAVA目录JRE―――――――运行环境SRC――――――-类库BIN―――――――应用程序一·基础知识配置环境LINUX系统(修改环境配置文件)1 打开shell2 vi .bash_profile3 JA V A_HOME=JA V A目录路径4 PATH=$JA V A_HOME/bin:其他路径5 CLASSPATH=.6 export JA V A_HOME CLASSPATHWindows系统我的电脑属性―――>环境变量设置环境变量:JA V A_HOME=路径PATH = %PATH%;c:\j2sdk1.4.2_05\bin;CLASSPATH = .;Java中基本概念1) 源文件在最顶层只包括一个public类型的类/接口,文件名与类/接口名同并以.java作为文件后缀。

CoreJava全套详细笔记(心血放出)资料

CoreJava全套详细笔记(心血放出)资料

目录1.原码、反码、补码 (5)1.1.原码 (5)1.2.反码 (5)1.3.补码 (5)1.4.负数的补码转换为十进制数 (6)2.char (6)3.运算符 (6)3.1.移位运算符 (6)3.2.位运算符 (7)3.3.逻辑运算符 (7)4.流程控制 (7)4.1.switch (7)4.2.break和continue (8)5.方法 (8)5.1.构造方法 (8)5.2.方法重载 (8)6.this (9)7.继承 (9)7.1.super (9)7.2.多态(polymorphism) (10)7.3.instanceof (10)8.static (11)9.final (11)10.abstract (12)11.类的加载 (12)11.1.触发类加载的几种情况 (12)11.2.类加载的顺序 (12)12.接口(interface) (13)13.访问控制 (14)14.Object类 (15)14.1.clone() (15)14.1.1.对象克隆过程 (15)14.1.2.浅复制和深复制概念 (16)14.2.finalize() (16)14.3.equals(Object obj) (16)14.4.toString() (16)15.String类及对象池 (16)15.1.String a="hello"; (17)15.2.String c=new String("hello"); (17)16.StringBuffer和StringBuilder (17)17.主方法参数 (18)18.方法的可变长参数 (18)19.包装类 (18)19.1.Number (19)19.2.自动封箱/自动解封(Autoboxing/Unboxing) (19)19.3.对象池 (19)20.内部类 (20)20.1.意义 (20)20.2.四种形式的内部类 (20)20.2.1.静态内部类 (20)20.2.2.成员内部类 (21)20.2.3.局部内部类 (22)20.2.4.匿名内部类 (22)20.3.内部类的应用 (24)21.集合框架(Collection Framework) (24)21.1.Iterator接口和Iterable接口 (25)21.2.Connection接口和Connections类 (25)21.2.1.java.util.Collection (25)21.2.2.java.util.Collections (25)21.3.List(列表)接口 (25)21.3.1.ArrayList (26)21.3.2.LinkedList (26)21.3.3.Vector (26)21.4.Set(集合)接口 (26)21.4.1.HashSet (27)21.4.2.TreeSet (29)21.5.排序的两种办法 (29)parable(可比较的) (29)parator(比较器) (30)21.6.Map (30)21.6.1.HashMap (30)21.6.2.Hashtable (31)21.6.3.Hashtable下的子类Properties类 (31)21.6.4.SortedMap接口下的TreeMap类 (31)22.泛型(Generic) (32)22.1.泛型特点 (32)22.2.通配符 (32)22.2.1.上限通配符: (32)22.2.2.下限通配符 (33)22.2.3.总结: (33)22.3.运用 (34)23.异常 (34)23.1.异常处理基础 (34)23.2.异常的类继承结构 (34)23.3.常见的未检查异常 (35)23.4.throw (35)23.5.自定义异常类 (36)24.反射(Reflection) (37)24.1.反射需要用到的类 (37)ng.Class (37)ng.reflect.Field (38)ng.Package (38)ng.relect.Modifier (38)ng.reflect.Mothed (38)ng.reflect.Array (38)ng.reflect.Constructor (38)24.2.三种获得某个类的Class对象的方法 (38)24.2.1.Class c=Class.forName("类名"); (38)24.2.2.Class c=类名.class; (39)24.2.3.Class c=对象名.getClass(); (39)24.3.所能探查出来的类的特征 (39)24.4.通过反射生成一个类的实例 (39)24.4.1.第一种方法 (40)24.4.2.第二种方法 (40)25.File (40)25.1.构造方法 (40)25.2.重点方法 (41)25.3.目录 (42)26.流 (42)26.1.字节流 (42)26.2.字符流 (44)26.3.节点流(Node Stream): (45)26.4.过滤流(Filter Stream) (45)26.5.ObjectInputStream和ObjectOutputStream (46)26.6.字节流转化成字符流的桥转换器 (48)26.7.文本文件和二进制文件 (50)27.线程 (50)27.1.概念与原理 (50)27.1.1.操作系统中线程和进程的概念 (50)27.1.2.Java中的线程 (51)27.1.3.Java中的线程模型 (51)27.1.4.一些常见问题 (51)27.2.线程状态的转换 (52)27.2.1.线程的七种状态 (52)27.2.2.阻止线程执行 (54)27.3.线程的同步与锁 (55)27.3.1.同步和锁定 (55)27.3.2.静态方法同步 (60)27.3.3.如果线程不能获得锁会怎么样 (60)27.3.4.何时需要同步 (61)27.3.5.线程安全类 (61)27.3.6.线程死锁 (62)27.3.7.线程同步小结 (63)27.4.线程的交互 (64)27.4.1.线程交互的基础知识 (64)27.4.2.多个线程在等待一个对象锁时候使用notifyAll() (66)27.5.守护线程(后台服务线程) (67)27.6.并发协作-生产者消费者模型 (68)27.7.volatile关键字 (68)28.网络编程 (69)28.1.TCP Socket编程 (69)28.1.1.ServerSocket (70)28.1.2.Socket (70)28.2.UDP Socket编程 (71)28.2.1.DatagramSocket (71)28.2.2.DatagramPacket (71)1.原码、反码、补码1.1. 原码将最高位作为符号位(以0代表正,1代表负),其余各位代表数值本身的绝对值(以二进制表示)。

CoreJava笔记汇总

CoreJava笔记汇总
1
class 檔的源码。 jre 目录是 JDK 自带的 JRE ,里面也有 bin 目录,一般存放的是运行时的一些命令 jre 活页夹中的 lib 文件中有一些 jar 文件,里面都是一些 class 檔在虚拟机运行时作为类 代码其中一个比较重要的 jar 檔就是 rt.jar,里面放的是 JDK 给我们提供的一整套类库的字 节码。 五、配置环境变量 JAVA_HOME :JDK 的安装路径 CLASSPATH:类的搜索路径 PATH :命令的搜索路径 Linux: --一般 JDK 是放在/opt/jdk1.6.0_05 --配置环境变量的文件是主目录中的".bash_profile"文件 进入终端后:vi .bash_profile 在里面配置: JAVA_HOME=/opt/jdk1.6.0_05 CLASSPATH=. PATH=$PATH:$JAVA_HOME/bin:....... export JAVA_HOME export CLASSPATH export PATH --配置完后保存退出,然后 source .bash_profile 在命令行打 java 命令验证是否配置成功,如果成功了,注销一遍系统 Windows: --右键我的计算机-->高级-->环境变量-->在系统变量或者用户变量上配置--> JAVA_HOME :当前机器上 JDK 的文件目录 "C:\Program Files\Java\jdk1.6.0_05" CLASSPATH:类的搜索路径 "." 当前目录 Path:命令的搜索路径 ...;%JAVA_HOME%\bin --开始-->运行-->cmd-->java 验证是否配置成功 六、第一个 JAVA 程序 一个 java 檔只能定义一个 public 类,并且 public 修饰的类的类名要与文件名相同 vi MyFirstJava.java public class MyFirstJava{ public static void main(String[] args){ String name="tangliang"; int age=30; System.out.println("my name is:"+name); System.out.println("my age is:"+age); } } 写好后在命令行 cd 到文件所在目录,然后打 javac MyFirstJava.java 编译檔 编译成功后当前檔夹中会出现一个 MyFirstJava.class 文件

SQL必知必会笔记

SQL必知必会笔记

SQL必知必会笔记第一章了解SQL1. 数据库是一个以某种有组织的方式存储的数据集合保存有组织的数据的容器(通常是一个文件或是一组文件) 2. 数据库软件应成为数据库管理系统DBMS3. 表某种特定类型数据的结构化清单4. 模式(schema)关于数据库和表的布局及特性的信息5. 列(Colomn)表中的一个字段。

所有表都是由一个或是多个列组成的。

6. 数据类型(datatype)所容许的数据的类型。

每个表列都有相应的数据类型,他限制(或容许)该列中存储的数据。

7. 行表中的一个记录8. 主键(primary key)一列或者一组列,其值能够唯一标识表中的每个行唯一标识表中每行的这个列(或这组列)称为主键。

主键用来表示一个特定的行。

没有主键,更新或删除表中特定行很困难,因为没有安全的方法保证只涉及相关的行。

9. 表中任何列都可以作为主键,只要满足(1)任意两行都不具有相同的主键值(2)每个行都必须具有一个主键值(主键列不允许NULL值)(3)主键列中的值不允许修改或更新(4)主键值不能重用,即某列从表中删除,它的主键不能赋给以后的新行。

第三章按多个列排序1( 子句(clause)sql语句由子句构成,有些子句是必须的,而有的是可选的。

一个子句通常由一个加上所提供的数据组成。

2( 子句的例子有SELECT语句的FROM子句3( ORDER BY 子句的位置在指定一条ORDER BY子句时,应保证它是SELECT语句中最后一条子句。

该子句的次序不对将会出现错误消息。

4( 按多个列排序执行多个列排序命令前可以发现同样的工资的人名不是按字典序排列的执行以后~~~撒花~~按列位置排序select FIRST_NAME,salaryfrom employeesorder by salary,FIRST_NAME;等价于select FIRST_NAME,salaryfrom employeesorder by 2,1;5( Order by 默认为升序排序而order by salary DESC 为降序排序DESC关键字只直接应用到位于其前面的列名ORDER BY salary DESC, FIRST_NAME; 6( 在SELECT语句中,数据根据WHERE 子句中指定的搜索条件进行过滤。

SQL 必知必会笔记整理

SQL 必知必会笔记整理

SQL 必知必会笔记整理目录SQL 必知必会笔记整理 (1)<1>了解SQL (2)<2>检索和排序数据 (3)<3>过滤数据 (5)<4>使用通配符过滤数据 (7)<5>创建计算字段 (8)<6>使用数据处理函数 (9)<7>汇总数据——使用聚合函数 (11)<8>分组数据 (14)<9>使用子查询 (15)<10>联结表 (16)<11>创建高级联结 (18)<12>组合查询 (20)<13>插入数据 (22)<14>更新和删除数据 (25)<15>创建和操纵表 (27)<16>使用视图 (29)<17>使用存储过程 (31)<18>管理事务处理 (32)<19>高级SQL特性 (35)<1>了解SQL 1.1 基本概念数据库(DataBase)表(Table)模式(Schema)列(Column)数据类型行(Row)主键满足以下条件的任何列都可以作为主键:1.2 关于SQLSQL扩展<2>检索和排序数据2.1.检索数据使用SELECT 检索表数据,必须至少给出两条信息——想选择什么,以及从什么地方选择。

检索不同的值限制结果使用关键字限制返回行数:1. SQL Server、Access——使用TOP关键字2. DB2——使用FETCH FIRST 5(行数) ROWS ONLY3. Oracle——使用ROWNUM(行计数器)4. MySQL、MariaDB、PostgreSQL、SQLite——LIMIT子句注释2.2.排序检索数据ORDER BY 子句指定排序方向提示<3>过滤数据3.1.过滤数据在同时使用ORDER BY和WHERE子句时,应该让ORDER BY位于WHERE 之后,否则将会产生错误WHERE子句操作符范围值检查3.2. 高级数据过滤组合WHERE子句<4>使用通配符过滤数据4.1.LIKE操作符百分号(%)通配符%表示任何字符出现任意次数:下划线(_)通配符只匹配单个字符,而不是多个字符,下面的示例有两个_通配符:^脱字号<5>创建计算字段5.1. 拼接(concatenate)5.2. 执行算术计算<6>使用数据处理函数与SQL 语句不一样,SQL 函数不是可移植的。

CoreJava学习笔记_2

CoreJava学习笔记_2

=====================day02==========================当ary1开始时堆中的20长度的数组不再被任何引用变量引用时,就成为垃圾了。

ary1长度也成了ary的int[] ary ={1,2,3,4,5,6};int[] ary1 = new int[20];System.out.println(ary1.length+",ary:"+ary.length);//20,ary:6ary1=ary;System.out.println(ary1.length+",ary:"+ary.length);//6,ary:6可以利用toString()转化为字符串。

回顾:Object:是Java的基类,Java所有类默认都继承于Object。

是任何类型的父类型。

toString():返回对象的文本描述。

经常被重写。

间接被调用。

被"回调"的方法。

如:在字符串连接时候,被调用。

equals:用于比较两个对象是否相等。

若不重写,则是按照Object中的equals,它是按==进行判断的。

经常被重写。

hashCode:要与equals一起重写的方法。

==:只能比较变量的直接值。

基本类型用==比较的是直接值。

引用类型用==比较的是引用的直接值(地址值)。

String类型:是Java中最重要的类型。

1)字符串对象是不可改变的。

(不变模式)2)内部是一个不可改变的字符数组。

3)String还提供了API方法,用于字符串的"修改(返回新字符串,原不变)"、查询等注:如果用字符数组和for循环等实现的优化算法性能会比String API好。

1.静态字符串的优化现象,静态字符串缓冲池:*******目的:性能优化!减少字符串对象的创建。

1)字符串字面量和常量称为"静态字符串"。

2)字面量和常量的连接在"编译期间"执行,优化为一个静态字符串3)在运行期间,Java在静态缓冲池中创建静态字符串,并且尽量使用同一个字符串对象。

core java知识点总结

core java知识点总结

core java知识点总结Core Java is a foundational programming language that is widely used for developing applications and software. It provides a strong base for developing enterprise-level applications, web applications, and mobile applications. It is essential for any Java developer to have a clear understanding of core Java concepts in order to write efficient and error-free code. This article aims to summarize some of the key core Java concepts, including object-oriented programming, multithreading, collections, and I/O, among others.1. Object-Oriented Programming (OOP)Object-oriented programming is a programming paradigm that revolves around the concept of objects. In Java, everything is an object except for primitive data types. The key principles of OOP are inheritance, encapsulation, polymorphism, and abstraction.a. Inheritance: Inheritance is the mechanism by which a class can inherit properties and behavior from another class. It promotes code reusability and helps in creating a hierarchical relationship between classes.b. Encapsulation: Encapsulation is the concept of hiding the internal implementation details of a class and exposing only the necessary functionalities. It is achieved through access specifiers such as private, protected, and public.c. Polymorphism: Polymorphism allows objects to be treated as instances of their parent class, enabling flexibility and extensibility. There are two types of polymorphism in Java: compile time (method overloading) and runtime (method overriding).d. Abstraction: Abstraction is the process of hiding the implementation details and showing only the necessary features of an object. It is achieved through abstract classes and interfaces.2. MultithreadingMultithreading is a powerful feature of Java that allows concurrent execution of multiple threads within a single process. It is used to utilize the CPU efficiently and to create responsive and interactive applications. Java provides built-in support for multithreading through the ng.Thread class and the java.util.concurrent package.a. Creating Threads: Threads in Java can be created by extending the Thread class or implementing the Runnable interface. The run() method is overridden to define the task to be performed by the thread.b. Thread Synchronization: Synchronization is used to control the access of multiple threads to shared resources. Java provides the synchronized keyword, locks, and semaphores to achieve thread synchronization.c. Thread Communication: Communication between threads can be achieved using methods such as wait(), notify(), and notifyAll(). These methods are used to implement the producer-consumer problem and other synchronization scenarios.3. Collection FrameworkThe Java Collection Framework is a set of interfaces and classes that provide essential data structures and algorithms for storing and manipulating groups of objects. It includes the List, Set, Map, Queue, and Deque interfaces, along with their respective implementations.a. List: Lists in Java maintain the order of elements and allow duplicate elements. The key classes implementing the List interface are ArrayList, LinkedList, and Vector.b. Set: Sets in Java do not allow duplicate elements and do not maintain any specific order. The key classes implementing the Set interface are HashSet, LinkedHashSet, and TreeSet.c. Map: Maps in Java store key-value pairs and do not allow duplicate keys. The key classes implementing the Map interface are HashMap, LinkedHashMap, and TreeMap.d. Queue and Deque: Queues in Java follow the FIFO (First-In-First-Out) order, while Deques (Double-Ended Queues) support operations at both ends. The key classes implementing these interfaces are PriorityQueue and ArrayDeque.4. Input/Output (I/O)Java I/O is used for reading and writing data from and to external sources such as files, streams, and consoles. It provides classes and methods for performing various I/O operations, such as reading from a file, writing to a file, and handling character and byte streams.a. File I/O: File I/O in Java is performed using classes such as File, FileInputStream, FileOutputStream, FileReader, FileWriter, and RandomAccessFile. These classes enable operations such as reading and writing files, creating directories, and checking file attributes.b. Stream I/O: Stream I/O in Java is based on the concept of reading and writing data in a sequential manner. There are two types of streams: byte streams (InputStream and OutputStream) and character streams (Reader and Writer).c. Serialization: Serialization is the process of converting an object into a byte stream for transmission or storage. Deserialization is the reverse process of reconstructing the object from its byte stream. Java provides the Serializable interface and the ObjectOutputStream and ObjectInputStream classes for serialization and deserialization.5. Exception HandlingException handling in Java is a mechanism for handling runtime errors and abnormal conditions that may arise during the execution of a program. It provides a structured way to deal with unexpected situations and maintain the robustness of the application.a. Checked Exceptions: Checked exceptions are the exceptions that are checked at compile time. They are typically handled using try-catch blocks or by declaring them in the throws clause of a method.b. Unchecked Exceptions: Unchecked exceptions, also known as runtime exceptions, are not checked at compile time and can occur at runtime. They are typically caused by programming errors and should be handled using try-catch blocks.c. Custom Exceptions: Java allows developers to define custom exceptions by extending the Exception class or one of its subclasses. This allows for more specific and meaningful error handling within the application.6. GenericsGenerics in Java enable the creation of parameterized types, allowing classes, interfaces, and methods to operate on objects of various types while providing compile-time type safety. They prevent type mismatches and class cast exceptions at runtime and promote code reuse and robustness.a. Generic Classes: Generic classes are defined using a type parameter enclosed in angle brackets. This type parameter represents the type of objects that the class can operate on.b. Generic Methods: Generic methods are methods that can operate on objects of different types. They are defined using a type parameter before the return type of the method.c. Bounded Type Parameters: Bounded type parameters in generics restrict the types that can be used as arguments to a generic class or method. They are used to specify upper and lower bounds for the type parameter.7. Java 8 FeaturesJava 8 introduced several new features and enhancements to the language, including lambda expressions, functional interfaces, the Stream API, and the new date and time API.a. Lambda Expressions: Lambda expressions provide a concise way to represent anonymous functions. They are used for implementing functional interfaces and enable functional programming in Java.b. Functional Interfaces: Functional interfaces are interfaces that contain exactly one abstract method. They are used in conjunction with lambda expressions to enable the use of functional programming constructs in Java.c. Stream API: The Stream API provides a declarative way to process collections of objects. It allows for filtering, mapping, reducing, and iterating over collections in a functional style.d. Date and Time API: Java 8 introduced a new date and time API in the java.time package, which provides classes for handling dates, times, durations, and periods in a more flexible and comprehensive manner.8. AnnotationsAnnotations in Java are a form of metadata that can be added to code elements such as classes, methods, and fields to provide additional information about the code. They are widely used for marking code for special processing or adding information for tools and libraries.a. Built-in Annotations: Java provides several built-in annotations, such as @Override,@Deprecated, and @SuppressWarnings, which are used for indicating method overriding, deprecation, and suppression of warnings, respectively.b. Custom Annotations: Java also allows developers to create custom annotations for their specific requirements. Custom annotations are defined using the @interface keyword and can contain elements and values.c. Annotation Processors: Annotation processors are tools that read and process annotations during compilation. They are used for generating code, validating code, and performing various other tasks based on the presence of annotations.In conclusion, core Java is a fundamental programming language that forms the basis for building robust and scalable applications. Understanding the core Java concepts such as object-oriented programming, multithreading, collections, I/O, and annotations is essential for any Java developer. Mastering these concepts will enable developers to write efficient, maintainable, and high-quality code for a wide range of applications and systems. As Java continues to evolve with new features and enhancements, staying updated with the latest developments in the language is crucial for Java developers to stay competitive in the industry.。

core java 知识点

core java 知识点

core java 知识点核心Java知识点为了帮助读者更好地理解核心Java知识点,本文将逐步回答以下问题:1. 什么是Java?2. Java的历史背景和发展历程是什么?3. Java的特点和优势有哪些?4. Java的基本语法是什么?5. Java的数据类型有哪些?6. Java的循环结构和条件语句有哪些?7. Java中的面向对象编程概念是什么?8. Java中的异常处理机制是什么?9. Java中的输入和输出如何实现?10. Java中的多线程编程是什么?11. Java的集合框架是什么?12. Java的反射机制是什么?13. Java的网络编程是什么?14. Java的文件操作是什么?15. Java的数据库连接是什么?16. Java的图形用户界面编程是什么?17. Java的国际化编程是什么?18. Java中的注解是什么?19. Java的常见设计模式有哪些?20. Java中的单元测试和集成测试是什么?接下来,我们将逐个回答这些问题。

1. 什么是Java?Java是一种广泛使用的计算机编程语言,由Sun Microsystems(现为Oracle)在1995年首次推出。

Java是一种面向对象的、基于类的编程语言,其设计目标是让开发者能够使用一次编写多处运行的原则,编写的Java代码可以在多个平台上运行。

2. Java的历史背景和发展历程是什么?Java的发展历程可分为以下几个阶段:- 1991年,Sun Microsystems的James Gosling和他的团队开始研发Oak语言,该语言后来演变为Java语言。

- 1995年,Sun Microsystems正式发布了Java语言,引起了广泛关注和使用。

Java 1.0成为第一个正式的Java版本。

- 1996年,Java 1.1发布,带来了许多重要的改进和新特性。

- 1998年,Java 2发布,引入了Java虚拟机(JVM)和Java 2标准版(J2SE)的概念。

corejava相关知识点总结

corejava相关知识点总结

corejava相关知识点总结corejava知识点归纳1、简述下java基本数据类型及所占位数,java基本数据类型:4类8种整数类型:byte(1byte),short(2byte),int(4byte),long(8byte)浮点类型:float(4byte),double(8byte)字符类型:char(2byte)逻辑类型:boolean(false/true 1byte)2、说出5个启动时异常RunTimeException------NullPointerException------ArrayIndexOutOfBoundsException------ClassCastException------NumberFormatException3、HashMap 和HashTable的区别:1HashMap 允许空键值对,HashTable不允许2HashMap不是线程安全的,HashTable是3HashMap直接实现Map接口,HashTable继承Dictionary类4、ArrayList,Vector,LinkedList存储性能和区别它们都实现了List接口 ArrayList 和Vector都是基于数组实现的LinkedList基于双向循环链表(查找效率低,添加删除容易)ArrayList不是线程安全的而Vector是线程安全的,所有速度上ArrayList高于Vector5、Collection和Collections的区别Collection是集合类的上级接口,继承与他的接口主要有Set和ListCollections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全等操作。

6、List、Map、Set三个接口,存取元素时,各有什么特点?List以特定次序来持有元素,可有重复元素。

Set 无法持有重复元素,内部排序Map保存key-value值,value可多值。

JAVA学习笔记(1)

JAVA学习笔记(1)
以0开头的为八进制,以0x开头的为十六进制

十进制与二进制的转换
01110011 117 过程:117-64=53 115(1+2+16+32+64) 01110101 53-32=21 21-16=5 5-4=1
0
1
1
1 0
101
求-117的二进制表示法 117的二进制为01110101 取反 加1 10001010 10001011
三个保留关键字
True False
null
Volatile while
线程同步
5 Java的变量类型


基本类型:boolean char byte short int long float double 引用类型: 所有类 接口 数组 枚举 标注
• 所有基本类型的值是内存存值 • 所有引用类型是存地址,地址引用具体的对象类存分为两块分别存地址 和对象
1.5(5.0)版是重大改进版添 加了泛型类型和foreach循环
1.3和1.4版本是 1.2的改进版, 扩展了标准类 库,提高了系统 修正了一些bug
6 软件外包
软件外包:包给客户以外,外人来做。或者是外 国人包给我们做
印度做的最好 爱尔兰在欧洲地区做的最好
中国只占 2%
7 软件的商业用途
•Enterprise 企业级(商用) •IT
•Src.zip :源代码包
Zip格式等价于jar格式都代表压缩格式文件,不同的 是jar专为java服务
12 配置环境变量
Path :该目录下的文件可以在任何文件中找到 格式:复制路径(含\bin);原有的path
Classpath :主要为JVM查找类服务

javaee笔记

javaee笔记

javaee笔记JavaEE 是一种面向企业的应用程序开发框架,其主要目标是简化开发过程并提高生产效率。

在学习 JavaEE 时,以下是一些有用的笔记资源:1. Unix 学习笔记:Unix 操作系统是 JavaEE 开发人员必备的基础知识,因此学习 Unix 操作系统的命令、文件系统和网络协议等知识非常重要。

2. CoreJava 学习笔记:CoreJava 是 JavaEE 的核心库,它提供了许多有用的类和方法。

学习 CoreJava 的基础知识对于深入了解JavaEE 是必要的。

3. XML 学习笔记:XML 是 JavaEE 中广泛使用的数据交换格式。

学习 XML 的基础知识以及如何使用 XML 文档和 XML Schema 进行数据建模非常重要。

4. Oracle 学习笔记:Oracle 是 JavaEE 的主要数据库。

学习Oracle 数据库的基础知识以及如何使用 JavaEE 应用程序连接到Oracle 数据库是非常重要的。

5. JSP 学习笔记:JSP 是 JavaServer Pages 的缩写,它是一种用于创建动态 Web 页面的 Java 技术。

学习 JSP 的基础知识以及如何使用 JSP 进行动态数据绑定和表达式非常重要。

6. PL/SQL学习笔记:PL/SQL是一种用于创建和管理数据库对象的SQL语言。

学习PL/SQL的基础知识对于深入了解JavaEE中的数据库访问技术是必要的。

7. SSH 学习笔记:SSH 是一种流行的 JavaEE 应用程序开发框架,它包括 Spring、Struts 和 Hibernate。

学习 SSH 的基础知识以及如何使用它们来构建企业级 Web 应用程序是非常重要的。

除了上述学习笔记资源之外,还有一些有用的参考信息,例如JavaEE 的官方文档、JavaEE 框架的官方文档以及 JavaEE 开发工具的官方文档等。

同时,还可以参考一些 JavaEE 开发实践和经验,例如如何使用 JavaEE 构建企业级应用程序、如何处理并发请求以及如何优化 JavaEE 应用程序的性能等。

SQL笔记

SQL笔记

SQL语言学习笔记作者:任孔宏Email:sunshine.rkh_accp@QQ:237634348第一节库操作及基本查询 (2)第二节表操作及约束 (3)第三节多表查询及聚合函数 (4)第四节多维数据集及计算列 (6)第五节批处理及case表达式 (8)第六节交叉报表及事务 (11)第七节 SQL安全性 (12)第八节高级查询 (14)第九节索引 (16)第十节视图 (17)第十一节游标 (20)第十二节存储过程 (24)第十三节触发器 (26)附录 SQL记忆内容汇总 (29)系统存储过程 (30)第一节库操作及基本查询/*SQL数据库管理*/create table emp(eid int,ename varchar(10),sal money)/*不可给自动增加列赋值*//*列名列表要和值列表匹配*//*字符类型与日期类型加单引号*/insert into emp(sal,ename,eid) values(1234,'rose',1001)/*删除表中数据*/1。

drop table emp--最为彻底2。

truncate table emp--不带日志,效率较高/*此两种方法不能被外键引用,不可带条件删除*/3。

delete from emp where .../*不能删除被引用的数据*//*表重命名*/sp_rename 'emp','newemp'/*列重命名*/sp_rename 'newemp.eid','neweid','COLUMN'/*复制表结构(带数据)*/select * into emp from newemp--自增与NOT NULL可复制,其他约束不可/*复制表结构(不带数据)*/select * into emp from newemp where 1>2/*复制部分列*/select clo1,col2,col3 into emp from newemp/*上三种中emp为select自动创建新表*//*查询指定表约束*/sp_helpconstraint emp/*执行指定的SQL指令*/sp_executesql N'select * from emp'/*N表示后面的字符串采用unicode编码体系(无论中英文均一字符双字节)*/ /*模糊查询like*/select * from emp where eid not like '[0-8][0-8][0-12]'/*中括号内代表‘一’位字符的范围,[0-12]即[0-1]||[0-2]*/select * from emp where ename like 'w_'/*"_"通配符,代表所有字符,就是麻将里的“混”*/select * from emp where ename like 'w%'/*"%"代表任意位的任意字符*/select * from emp where not ename='we'/*not不等于*/select * from emp where ename is null/*is null不是=null!*/select * from emp where ename is not null/*is not null不是not is null*/select * from emp where eid not in (2002)/*in 包含于*/select * from emp where eid between 1001 and 1002/*between 在两值之间的范围内取值*/第二节表操作及约束/*表操作*//*创建表*/create table emp(eid int primary key,--主键ename sql_variant, --通用数据类型flag timestamp --时间戳)/*插入列*/alter table emp add esex varchar(10) default 'nan'/*插入数据*/insert into emp(eid,ename) values(1004,'accp')insert into emp(eid,ename) values(1005,getdate())insert into emp(eid,ename) values(1006,3.1415926)/*更新数据*/update emp set ename='app' where eid=1004/*约束*/create table emp(eid int constraint pk_eid primary key,--主键约束ename varchar(10),sal numeric(7,2) constraint ck_sal check (sal>0),--检查约束selfid varchar(18) constraint uq_id unique, --唯一约束idate datetime constraint def_data default getdate()--默认约束)sp_pkeys emp--查看主键sp_help emp--查看约束alter table emp drop CK__emp__sal__78B3EFCA--删除约束alter table emp add constraint pk_id primary key(eid)--增加约束/*外键操作*/create table dept--主表(did int primary key,dname varchar(10),)create table emp(eid int primary key,ename varchar(10),dno int constraint fk_did foreign key references dept(did) on update cascade/*on delete no action 无级连更新,删除时外键冲突报错并回滚delete*//*on update no action 无级连更新,更新时外键冲突报错并回滚update*//*on delete cascade 删除时允许级连更新*//*on update cascade 更新时允许级连更新*/)alter table emp add constraint fk_did foreign key (dno) references dept(did)--增加外键第三节多表查询及聚合函数/*查询实例*/create table com(cid int primary key,cname varchar(10),ctel varchar(20))--公司表create table dept(did int primary key,dname varchar(10),dtel varchar(20),cno int references com(cid))--部门表create table emp(eid int primary key,ename varchar(10),etel varchar(10),dno int references dept(did)) --员工表/*插入数据*/insert into com select 1001,'sun','120'union select 1002,'IBM','130'union select 1003,'top','140'union select 1004,'MS','150'--union 集合运算符,批量操作insert into dept select 2001,'财务部','110',1001union select 2002,'行政部','120',1001union select 2003,'组织部','130',1001union select 2004,'人事部','140',1001insert into emp select 3001,'rose','110',2001union select 3002,'jack','120',2002union select 3003,'tom','130',2003union select 3004,'mike','140',2004union select 3005,'wilin','150',2002/*多表连接查询*/select * from dept left outer join emp on emp.dno=dept.did--左外连接,左表的所有数据以及右表的匹配数据,不匹配显示NULLselect * from emp left outer join dept on emp.dno=dept.did left outer join com on o=com.cid--多表左连接/*右连接*/select * from com right outer join dept on com.cid=o--右表中的所有数据,左表中的匹配数据,左表中不能和右表匹配的数据‘不显示’,--右表中的数据如果在左表中找不到匹配数据,会在对应左表位置显示为NULL/*内连接*/create table employee(eid int primary key,ename varchar(10),reportto int references employee(eid))insert into employee select 1001,'rose',nullunion select 1002,'will',1001union select 1003,'yao',1001union select 1004,'gigi',1002select * from employee e inner join employee m on m.eid=e.reportto --显示员工与其直接上级的对应关系/*聚合函数*/create table goods(gid int,gname varchar(10),price money)insert into goods select 1002,'accp',3456union select 1002,'bccp',56union select 1003,'cccp',456/*错误事例*/select gid ,avg(price) as avgp from goods/*正确事例*/select gid ,avg(price) as avgp from goods group by gid--单行与聚合不能一起使用,除非一句单行进行分组/*错误事例*/select * from goods where price=max(price)/*正确事例*/select * from goods where price=(select max(price) from goods)--聚合函数不能出现在where指令中第四节多维数据集及计算列create table inventory(item varchar(10),color varchar(10),quantity int--库存表)insert into inventory select 'table','blue',124union select 'table','red',223union select 'table','red',211union select 'chair','blue',101union select 'chair','red',210/*group by,order by*/select item,color,sum(quantity) as qu from inventory group by item,color order by it em desc--只有item和color相同的行才能分在一个组中/*with CUBE*/select item,color,sum(quantity) as qu from inventory group by item,color with CUBE order by item desc--CUBE 运算符生成的结果集是多维数据集。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

诚信、创新、开放、合作JAVA的面向对象编程--------课堂笔记面向对象主要针对面向过程。

面向过程的基本单元是函数。

什么是对象:EVERYTHING IS OBJECT(万物皆对象)所有的事物都有两个方面:有什么(属性):用来描述对象。

能够做什么(方法):告诉外界对象有那些功能。

后者以前者为基础。

大的对象的属性也可以是一个对象。

为什么要使用面向对象:首先,面向对象符合人类看待事物的一般规律。

对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节。

方法的定义非常重要。

方法有参数,也可能有返回值。

注意区分:对象(本身)、对象的实现者、对象的调用者。

分析对象主要从方法开始。

我们通过类来看待对象,类是对象的抽象。

其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。

对象之间的耦合性一定要低(比如不同硬盘和不同主板之间的关系)。

这样才能使每个对象本身做成最好的。

对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。

实现高内聚就是要最大限度低提高复用性(复用性好是因为高内聚)。

可复用性是OOP的基础。

比较面向过程的思想和面向对象的思想:面向过程的思想:由过程、步骤、函数组成,以过程为核心;面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。

面向过程是先有算法,后有数据结构。

面向对象是先有数据结构,然后再有算法。

在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象。

开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能。

从语法上来看,一个类是一个新的数据类型。

在面向对象编程中,除了简单数据类型,就是对象类型。

定义类的格式:class Student{代码}注意类名中单词的首字母大写。

实例变量:定义在类中但在任何方法之外。

(New出来的均有初值)局部变量:定义在方法之中的变量。

局部变量要先赋值,再进行运算,而实例变量均已经赋初值。

这是局部变量和实例变量的一大区别。

实例变量的对象赋值为null。

局部变量不允许范围内定义两个同名变量。

实例变量的作用域在本类中完全有效,当被其他的类调用的时候也可能有效。

实例变量和局部变量允许命名冲突。

书写方法的格式:修饰符返回值方法名调用过程中方法体可能出现的例外public int/void addNumber(参数) throw Excepion {}例:public int addNumber(int a,int b){}注:方法名中的参数int a,int b为局部变量类方法中的一类特殊方法:构造方法。

构造方法是当用类生成对象时,系统在生成对象的过程中利用的方法。

注意:构造方法在生成对象的时候会被调用,但并不是构造方法生成了对象。

构造方法没有返回值。

格式为:public 方法名。

构造方法的方法名与类名相同。

构造方法是在对象生成的过程中自动调用,不可能利用指令去调用。

在一个对象的生成周期中构造方法只用一次,一旦这个对象生成,那么这个构造方法失效。

用类来生成对象的语句:Student s=new Student()。

第一个Student表示这是用Student类进行定义。

“Student()”表示调用一个无参数的构造方法。

如果()中有参数,则系统构造对象的过程中调用有参的方法。

此时S称为一个对象变量。

Student s的存储区域存放的是地址:一个对象在硬盘上占有一个连续地址,首地址赋予s空间。

S称为对象Student的引用。

注意:在对象变量中存放的是引用(地址);在简单变量中存放的是数值。

可以构造多个构造方法,但多个构造方法的参数表一定不同,参数顺序不同即属于不同的构造方法:public student(string name,int a){}public student(int a,string name){}为两个不同的构造方法。

如果我们未给系统提供一个构造方法,那么系统会自动提供一个为空的构造方法。

练习:写一个类,定义一个对象,定义两个构造方法:一个有参,一个无参。

(编写一个程序验证对象的传递的值为地址)注意下面这种形式:static void changename(student stu){stu.setName “LUCY”}注意生成新的对象与旧对象指向无关,生成新对象生命消亡与旧对象无关。

面向对象方法的重载(overloading)和覆盖(overriding)。

在有些JA V A书籍中将overriding称为重载,overloading称为过载。

Overloading在一个类中可以定义多个同名方法,各个方法的参数表一定不同。

但修饰词可能相同,返回值也可能相同。

在程序的编译过程中根据变量类型来找相应的方法。

因此也有人认为overloading是编译时的多态,以后我们还会学到运行时多态。

为什么会存在overloading技术呢?作为应对方法的细节。

利用类型的差异来影响对方法的调用。

吃()可以分为吃肉,吃菜,吃药,在一个类中可以定义多个吃方法。

构造方法也可以实现overloading。

例:public void teach(){};public void teach(int a){};public void teach(String a){}为三种不同的方法。

Overloading方法是从低向高转。

Byte—short—float—int—long—double。

在构造方法中,this表示本类的其他构造方法:student(){};student(string n){this();//表示调用student()}如果调用student(int a)则为this(int a)。

特别注意:用this调用其他构造方法时,this必须为第一条语句,然后才是其他语句。

This表示当前对象。

Public void printNum(){Int number=40;System.out.println(this.number);}此时打印的是实例变量,而非局部变量,即定义在类中而非方法中的变量。

This.number表示实例变量。

谁调用this.number那么谁即为当前(this)对象的number方法。

封装:使对象的属性尽可能私有,对象的方法尽可能的公开。

用private表示此成员属性为该类的私有属性。

Public表示该属性(方法)公开;Private表示该属性(方法)为只有本类内部可以访问(类内部可见)。

(想用private还要用set和get方法供其他方法调用,这样可以保证对属性的访问方式统一,并且便于维护访问权限以及属性数据合法性)如果没有特殊情况,属性一定私有,方法该公开的公开。

如果不指明谁调用方法,则默认为this。

区分实例变量和局部变量时一定要写this。

11.29继承:父类(SuperClass)和子类(SonClass)。

父类的非私有化属性和方法可以默认继承到子类。

Class Son extends Father{}而如果父类中的私有方法被子类调用的话,则编译报错。

父类的构造方法子类不可以继承,更不存在覆盖的问题。

(非构造方法可以)如果子类访问父类的构造方法,则在编译的时候提示访问不到该方法。

JA VA中不允许多继承,一个类有且只有一个父类(单继承)。

JA VA的数据结构为树型结构,而非网状。

(JA V A通过接口和内部类实现多继承)方法的覆盖(overriding)方法的重载并不一定是在一个类中:子类可以从父类继承一个方法,也可以定义一个同名异参的方法,也称为overloading。

当子类从父类继承一个无参方法,而又定义了一个同样的无参方法,则子类新写的方法覆盖父类的方法,称为覆盖。

(注意返回值类型也必须相同,否则编译出错。

)如果方法不同,则成重载。

对于方法的修饰词,子类方法要比父类的方法范围更加的宽泛。

父类为public,那么子类为private则出现错误。

之所以构造方法先运行父类再运行子类是因为构造方法是无法覆盖的。

以下范围依次由严到宽:private :本类访问;default :表示默认,不仅本类访问,而且是同包可见。

Protected:同包可见+不同包的子类可见Public :表示所有的地方均可见。

当构造一个对象的时候,系统先构造父类对象,再构造子类对象。

构造一个对象的顺序:(注意:构造父类对象的时候也是这几步)①递归地构造父类对象;②顺序地调用本类成员属性赋初值语句;③本类的构造方法。

Super()表示调用父类的构造方法。

Super()也和this一样必须放在第一行。

This()用于调用本类的构造方法。

如果没有定义构造方法,那么就会调用父类的无参构造方法,即super()。

要养成良好的编程习惯:就是要加上默认的父类无参的构造方法。

思考:可是如果我们没有定义无参的构造方法,而在程序中构造了有参的构造方法,那么如果方法中没有参数,那么系统还会调用有参的构造方法么?应该不会。

多态:多态指的是编译时类型变化,而运行时类型不变。

多态分两种:①编译时多态:编译时动态重载;②运行时多态:指一个对象可以具有多个类型。

对象是客观的,人对对象的认识是主观的。

例:Animal a=new Dog();查看格式名称;Dog d=(Dog)a。

声明父类来引用子类。

(思考上面的格式)运行时多态的三原则:(应用时为覆盖)1、对象不变;(改变的是主观认识)2、对于对象的调用只能限于编译时类型的方法,如调用运行时类型方法报错。

在上面的例子中:Animal a=new Dog();对象a的编译时类型为Animal,运行时类型为dog。

注意:编译时类型一定要为运行时类型的父类(或者同类型)。

对于语句:Dog d=(Dog)a。

将d强制声明为a类型,此时d为Dog(),此时d就可以调用运行时类型。

注意:a和d指向同一对象。

3、在程序的运行时,动态类型判定。

运行时调用运行时类型,即它调用覆盖后的方法。

关系运算符:instanceofa instanceof Animal;(这个式子的结果是一个布尔表达式)a为对象变量,Animal是类名。

上面语句是判定a是否可以贴Animal标签。

如果可以贴则返回true,否则返回false。

在上面的题目中: a instanceof Animal返回 True,a instanceof Dog也返回 True,instanceof用于判定是否将前面的对象变量赋值后边的类名。

Instanceof一般用于在强制类型转换之前判定变量是否可以强制转换。

如果Animal a=new Animal();Dog d=Dog()a;此时编译无误,但运行则会报错。

Animal a=new Dog()相当于下面语句的功能:Animal a=getAnimal();Public static Animal.getAnimal;Return new Dog();封装、继承、多态为面向对象的三大基石(特性)。

相关文档
最新文档