JAVA学习大纲
1、第一节 JAVA概念与JDK的安装
(1)JDK的安装和环境变量的设置;
(2)相关基本概念:JDK、SDK、JRE、JVM、J2SE、J2EE、J2ME、java API、JAVA语言特点;
(3)一个简单的Hello World简单示例;
(4)javac.exe、java.exe、appletviewer.exe的作用、使用;
(5)基本输入输出应用
• import java.util.Scanner;
Scanner s=new Scanner(System.in);
float x=s.nextFloat();//s.nextLong();
System.out.print("x="+x);
2、第二节 基本类型与复合类型概念、数组
(1)JAVA的八种基本类型:boolean、char、byte、short、int、long、float、double
基本型 |
boolean |
byte |
char |
short |
int |
long |
float |
double |
包装类 |
Boolean |
Byte |
Character |
Short |
Integer |
Long |
Float |
Double |
注:包装类介绍在5.8.1节(P143)
• 整型常量默认为:int; 浮点常量默认为:double;
int x=123(√) float x=123.4(Χ )
long x=123(√) double x=123.4(√)
(2)基本类型与复合类型的区别;基本类型变量与引用类型变量的区别;(举例说明)
(3)数组的声明、创建、初始化
• 例:int[] x; //声明 //声明时一定不能在[]中写入数字
x=new int[10]; //创建
x[0]=1; //初始化
• 通过初始化创建数组:
String[] names=new String[]{“kack”,”wang”,”zhang”};
String[] names={“kack”,”wang”,”zhang”};
• 二维数组
int[][] x; //声明
x=new int[3][]; //创建
x[0]=new int[4]; //初始化
(4)数组是类对象,其数组长度在创建时确定,可通过[数组名.length]获取到数组的长度
3、第三节 类特征、定义、构造方法、实例化
(1)面向对象的三大特征:封装、继承、多态
• 封装:解决了数据的安全性问题
• 继承:解决了代码的重用问题
• 多态:解决了程序的扩展问题(编译时多态-重载;运行时多态)
(2)类与对象的概念
(3)类的结构(成员变量、成员方法)和类的定义
class 类名
{ }
(4)什么是构造方法及作用
• 方法名和类名相同
• 只能通过new调用,用来创建类对象
• 构造方法不能有返回值,不写void
4、第四节 包、访问权限、继承
(1)包的定义与使用
• 定义:package 包名;
• 使用:import包名.类名; import包名.*;
(2)四种访问权限private、default、protected、public
同一个类 |
同一个包 |
子类 |
全局 |
|
private |
√ |
|||
default |
√ |
√ |
||
protected |
√ |
√ |
√ |
|
public |
√ |
√ |
√ |
√ |
说明:类仅可以用public、default修饰;成员可以全部用来修饰;
(3)类的继承:class A extends B { }
• 只单继承,不能多重继承
• 省略extends B时,默认继承于Object
• 父类的构造方法、private修饰的成员都不能被子类继承
• 实例化子类对象时,先要执行父类的构造方法,然后再执行子类的构造方法。因此,当父类具有带参数的构造方法是,一定注意保留其不带参数的构造方法。
5、第五节 this、super的含义,重载与重写
(1)this与super的使用
this:代表当前类; super代表父类/父类构造方法;
(2)方法的重载
• 类中多个方法:名相同,参数不同(个数、类型、顺序)
• 实现了JAVA的编译时多态(多态的两种方式之一)
(3)方法重写(overriding)
• 指子类重写父类的成员方法;其方法名、返回值、参数列表必须完全一致。
• 注意和方法重载的区别
(4)运行时多态
• 上溯造型:将子类类型转换为父类类型(安全)
例: 动物:猫、狗、猪,都为动物,但叫声不同
• 下溯造型:将父类类型强制转换为子类类型(不安全)
(5)类型测试运算符:instanceof
用法:if(A对象 instanceof B类){ }
(6)Object.equals(Object b)与==的区别
• equals比较的是对象的内容(String、Date、File、Interger、Long)
• 但Object最早是用来比较是否指向同一个对象,只是后来被他们重写了,比较两个对象是否指向同一个地址
6、第六节 static、final的使用,抽象类与接口
(1)static(静态)
• 用static修饰的变量或方法称为类变量、类方法,即静态变量和静态方法;
• 一个类的所有对象共享同一个类变量、类方法,即静态变量和静态方法;
• 静态成员(即静态变量和静态方法),不用实例化就可以使用(类名. 静态成员);
• 静态方法中不能引用非静态的变量或方法,因此静态方法中不能出现this;
• 子类不能重写父类的静态方法,但可以去掉static重写(不是真正的重写),可以将父类的静态方法隐藏
(2)final(最终)
• 用来修饰类:类不能被继承;
• 用来修饰方法:方法不能被重写;
• 用来修饰变量:变量只读;定义时赋初值,或在构造方法中附初值;
(3)抽象类
• 抽象类:用关键词abstract修饰的类为抽象类;
• 抽象方法即:由abstract修饰,只提供方法声明而不提供方法实现;
• 抽象类中可以有抽象方法也可以没有抽象方法;
abstract class C
{
abstract void aaa(); //抽象方法
void bbb(){ } //非抽象方法
}
• 抽象类不能创建实例;必须通过子类继承并实现其全部抽象方法后方可创建实例;
(4)接口
• 并非类,可以多重继承,可包含常量定义和方法定义两部分,其所有方法不能有方法体;
• 接口声明:[public] interface 接口名 [extends superinterface1, superinterface1…]
public interface Flyer
{
int NO=1001;
public void takeoff();
public void land();
public void fly();
}
//其中常量默认具有public、final、static属性;方法默认具有public、abstract属性
• 接口实现:即在类中写出接口的所有方法的实现;
public class AirPlane implements Flyer
{
public void takeoff() {实现代码}
public void land() {实现代码}
public void fly() {实现代码}
}
7、第七节 图形界面及事件
(1)概念:GUI、AWT、Swing
• GUI与AWT的含义;
• AWT与Swing的区别;
• 什么是组件(Label、Button、TextArea、Panel、Frame…);
• 什么是容器(Panel、Frame…);
• 如何创建一个基本的Windows(GUI)应用程序;
(2)布局管理器
每个容器都可以设置为以下的任一种布局管理
• FlowLayout:流式布局
• BorderLayout:边界布局
• GridLayout:网格布局
• CardLayout:卡片布局
• GridBagLayou:网格包布局
(3)事件处理
• 什么是事件、事件源、事件处理器
• 实现思路:定义事件类-->注册事件到组件上
• 常见事件处理接口及其方法
事件类 |
说明 |
事件源 |
接口名 |
方法 |
ActionEvent |
通常按下按钮,双击列表项或选中一个菜单项时,就会生成此事件。 |
Buttot List MenuItem TextField |
ActionListener
|
actionPerformed |
AdjustmentEvent |
操纵滚动条时会生成此事件。 |
Scrollbar |
AdjustmentListener |
adjustmentValueChanged |
KeyEvent |
接收到键盘输入时会生成此事件。 |
Component |
KeyListener |
keyPressed keyReleased keyTyped |
MouseEvent |
拖动、移动、单击、按下或释放鼠标或在鼠标进入或退出一个组件时,会生成此事件。 |
Component |
MouseListener |
mouseClicked mouseEntered mouseExited mousePressed mouseReleased |
WindowEvent |
当一个窗口激活、关闭、失效、恢复、最小化、打开或退出时会生成此事件。 |
Window |
WindowListener |
windowActivated windowDeactivated windowClosed windowClosing windowIconified windowDeiconified windowOpened |
8、第八节 Applet
(1)什么是Applet
• 是嵌入到网页中通过浏览器执行的JAVA小程序,没有main方法,是基于图形界面的;
• 可以使用JDK的appletviewer来运行网页文件;
(2)Applet的定义和使用
• 类的定义
import java.applet.*;
public class hellow extends Applet {
//主要是对父类方法的重写
}
• 网页中的调用
<body bgcolor="000000">
<applet
code = "mypack.hellow.class"
width = "500"
height = "300"
>
</applet>
</body>
(3)Applet生命期四个阶段的主要事件
• void init() void start() void stop() void destroy()
(4)两个重要方法
• paint(Graphics g):在Applet中显示文字图形等信息,在其生命其中可被多次调用
• repaint():首先清除Applet界面,然后调用paint(Graphics g) 重新绘图界面
(5)Applet的多媒体应用(示例:图形、音乐)
9、第九节 异常
(1)异常的概念:程序在运行时出现的任何不正常现象或错误被称为异常。(例如:文件不存在、除零、数组越界、网络中断等)
(2)异常的处理:try-catch-[finally]
try {
//可能出现异常的语句;
}
catch(Exception e)
{ //可有多个catch块,当异常类型与之匹配,则执行之
//异常产生后的处理代码
//e.getMessage();
//e.printStackTrace();
}
finally {
//有无异常均执行,用于异常后的清理工作
}
说明:
• String getMessage() 获取异常相关的描述信息。
• void printStackTrace() 显示异常相关信息,含异常的原因,及产生异常的代码行。
(3)throws与throw
• throws:用于将函数内部产生的异常抛给主调函数;如果某个函数中的代码有可能引发异常,可以使用try/catch块进行处理,这种处理方式成为“内部处理”;如果不方便在函数内部进行处理,也可以将异常往函数外部传递,这就要使用到关键字throws;
返回值类型 函数名(参数列表) throws 异常类型
{
}
• throw:在方法体内手工抛出异常(可以抛出系统定义异常,主要是用户自定义异常)
if (age < 0 || age > 100)
{
//创建一个异常实例,并将其手工抛出
throw (new Exception("您输入的年龄无效。"));
}
10、第十节 多线程
(1)线程与进程的概念;
• 一个进程在其执行过程中,可以产生多个线程,形成多个程序的执行流。
(2)创建线程的两种方法:①继承Thread类 ②实现Runnable接口;
• 其共同点就是重写或实现run()方法,因为所有线程都是从run()开始运行;
• class thread1 extends Thread
{
public void run()
{ … }
}
创建线程实例:thread1 t=new thread1();
启动线程:t.start();
• class thread1 extends superclass implements Runnable
{
public void run()
{ … }
}
创建线程实例:Thread t=new Thread( new thread1() );
启动线程:t.start();
(3)线程的基本控制方法
• start():启动线程
• stop():终止线程
• sleep(int s):在线程内部调用使线程休眠一段时间后继续运行
• isAlive:判断线程是否激活
• interrupt():唤醒一个正在sleep()、join()、wait()的线程
• suspend():暂停一个线程
• resume():恢复一个线程
• Thread.currentThread():获取当前线程实例
11、第十一节 文件操作
(1)文件使用包:java.io.*,包含一系列对文件和目录的属性进行操作,对文件进行读写操作的类;
(2)三个重要类:File、FileInputStream、FileOutputStream;注意捕捉异常;
(3)File 类:
一个File类对象可以代表一个文件或目录;利用它来对文件或目录的属性进行操作,如:文件名、最后修改日期、文件大小等等;需要注意的是,File对象并不能直接对文件进行读/写操作,只能查看文件的属性;
①构造方法:File(String pathname);共有4种,此方法常用;
②常用方法:
• boolean exists() 判断文件是否存在,存在返回true,否则返回false
• boolean isFile() 判断是否为文件,是文件返回true,否则返回false
• boolean isDirectory() 判断是否为目录,是目录返回true,否则返回false
• String getName() 获得文件的名称
• String getAbsolutePath() 获得文件的绝对路径
• long length() 获得文件的长度(字节数)
(4)FileInputStream类:文件输入流,继承于InputStream类,是进行文件读操作的最基本类;
①构造方法:
• FileInputStream(File file)
• FileInputStream(String name)
②常用方法:
• int read() 一次读取一个字节,返回值为数据,读到文件尾返回-1;
• int read(byte[] b) 读数据到byte数组中,并返回读取数量,未读到数据返回-1;
• void close() 关闭流对象;
(5)FileOutputStream类:文件输出流,继承于OutputStream类,是进行文件写操作的最基本类;
①构造方法:
• FileOutputStream(File file)
• FileOutputStream(File file, boolean append)
• FileOutputStream(String name)
• FileOutputStream(String name, boolean append);
②常用方法:
• void write(int b) 一次写一个字节;
• void write(byte[] b) 将byte数组中的数据全部写入到文件中;
• void close() 关闭流对象;
(6)文件读写举例
12、第十二节 数据库技术
(1)JDBC的概念:(Java Data Base Connectivity)是JAVA程序访问数据库的标准API。
(2)了解:ODBC与JDBC的区别与关系;JDBC的四种驱动类型;SQL数据库语言
(3)数据库操作主要涉及到的包及类
• 数据库操作包:java.sql.*;
Driver |
用于创建连接(Connection)对象 |
Connection |
连接对象,用于与数据库取得连接 |
Statement |
语句对象,用于执行SQL语句,并将数据检索到结果集(ResultSet)对象中 |
PreparedStatement |
预编译语句对象,用于执行预编译的SQL语句,执行效率比Statement高 |
CallableStatement |
存储过程语句对象,用于调用执行存储过程 |
ResultSet |
结果集对象,包含执行SQL语句后返回的数据的集合 |
(4)JDBC开发数据库应用的一般步骤
①建立与数据库的连接
• Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//access加载驱动程序
• Connection con = DriverManager.getConnection(url,user,password);//创建连接
②执行SQL语句
• Statement stm=con.createStatement();
• ResultSet s=stm.executeQuery("select * from table");//execute、executeUpdaye
③处理结果集
while(s.next())
{
String s2=s.getString("name");
String s4=s.getString("content");
java.sql.Date s5=s.getDate("date");
}
④关闭数据库连接
s.close();
stm.close();
con.close();
(4)数据库应用举例
① 建立连接
import java.sql.*;
Connection con;
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=d:\\db.mdb";//access
String url ="jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=pubs";//sqlserver2000
String url ="jdbc:oracle:thin:@127.0.0.1:1521:orcl";// oracle
String user="";
String password="";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//access加载驱动程序
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//sqlserver2000
Class.forName("oracle.jdbc.driver.OracleDriver");// oracle
con = DriverManager.getConnection(url,user,password);//创建连接
② 读数据
Statement stm=con.createStatement();
ResultSet s=stm.executeQuery("select * from table");
while(s.next())
{
String s1=s.getString("title");
String s2=s.getString("name");
String s3=s.getString("email");
String s4=s.getString("content");
java.sql.Date s5=s.getDate("date");
}
s.close();
stm.close();
con.close();
③ 写数据
PreparedStatement stm=con.prepareStatement("insert into message values(?,?,?,?,?)");
stm.setString(1, "aaa");
stm.setString(2, "bbb");
stm.setString(3, "ccc");
stm.setString(4, "ddd");
stm.setDate(5, new java.sql.Date(new java.util.Date().getTime()));
stm.execute();
stm.close();
con.close();
13、第十三节 常用包
java.lang、java.awt、javax.swing、java.applet、java.awt.event、java.util、java.io、java.sql;
14、第十四节 JAVA语言在Web开发的应用(JSP、Web服务器)
(1) 动态Hello Word输出;
(2) 简单计算器应用;
(3) 数据库访问;
(4) 用户注册登录;
JAVA学习大纲的更多相关文章
- Java学习大纲-0412更新
非科班报培训班学习Java,从博客园,知乎,CNDS上搜了一圈,暂时按以下计划执行,有问题随时更新--0412 1.培训班的课程按时按点学习完成(毕竟掏钱在学的是不,不好好听亏不亏...) keys: ...
- Java 学习大纲
1.java基础 1.1 Collection和Map (1)掌握Collection和Map的继承体系 (2)掌握ArrayList,LinkedList,Vector,Stack, ...
- 《Java开发学习大纲文档》V7.0
<Java开发学习大纲文档>V7.0简介: 本文档是根据企业开发所需要掌握的知识点大纲进行总结汇编,是Java开发工程师必备知识体系,系统化学习针对性非常强,逻辑分析能力非常清晰;技术方面 ...
- 《Java开发学习大纲文档》V6.0(已经不公布了,请查看第七版)
<Java开发大纲学习文档第六版>简介: 有需要的私聊作者QQ:253173641.
- Java并发编程(一)学习大纲
(一)学习大纲 (二)线程与并发编程的概念 (三)线程安全.原子操作.复合操作.竞态条件.加锁机制(内置锁.重入) (四)对象的共享:可见性.失效数据.非原子的64位操作,加锁与可见性,volatil ...
- Java学习知识体系大纲梳理
感悟 很奇怪,我怎么会想着写这么一篇博客——Java语言的学习体系,这不是大学就已经学过的课程嘛.博主系计算机科班毕业,大学的时候没少捧着Java教程来学习,不管是为了学习编程还是为了期末考个高分,都 ...
- (转)2019年给Java编程初学者的建议(附学习大纲)
本文链接:https://blog.csdn.net/javajlb/article/details/85920904 1. 引言这是一篇初学者干货,请耐心看完,希望对你有帮助 作为初学者的你,命中了 ...
- 【有钱的大佬看过来】Java开发学习大纲
Java开发学习大纲文档V7.0 有钱的大佬可以买下这个版权,全网最完整最详细了,没钱的大佬可以按照自己的方式去整理.有需要的私聊作者QQ:253173641 来源于-幸福的沉淀:https://ww ...
- 《Java开发学习大纲文档》V8.0
<Java开发学习大纲文档>V8.0 第八版是以实战作为核心,同时也包含前面所有版本的精华部分,第八版加入的部分有云开发(阿里云OSS存储.(github)gitlab+docker网站自 ...
随机推荐
- Python 学习笔记:Python 操作 SQL Server 数据库
最近要将数据写到数据库里,学习了一下如何用 Python 来操作 SQL Server 数据库. 一.连接数据库: 首先,我们要连接 SQL Server 数据库,需要安装 pymssql 这个第三方 ...
- Proe5.0导出PDF至配置文件的相关方法,VC++
定义文件bcsMessage.txt PLM PLM PLM # login login 测试 # Active messagebox menu Active messagebox menu 激活菜单 ...
- JavaEE基础(01):Servlet实现方式,生命周期执行...
一.Servlet简介Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容.使用Servlet,可以收集来自网页表单的用户输入,呈现来自数据库 ...
- debian8.8更新源
##163源 deb http://mirrors.163.com/debian/ jessie main non-free contribdeb http://mirrors.163.com/deb ...
- RDD(九)——序列化问题
在实际开发中我们往往需要自己定义一些对于RDD的操作,那么此时需要考虑的主要问题是,初始化工作是在Driver端进行的,而实际运行程序是在Executor端进行的,这就涉及到了跨进程通信,是需要序列化 ...
- 2020 CCPC Wannafly Winter Camp Day1-F-乘法
题目传送门 sol:二分答案$K$,算大于$K$的乘积有多少个.关键在于怎么算这个个数,官方题解上给出的复杂度是$O(nlogn)$,那么计算个数的复杂度是$O(n)$的.感觉写着有点困难,自己写了一 ...
- Java线程池面试
New Thread的弊端 每次new Thread会新建对象,性能差 线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致死机或OOM 缺少更多功能,如更多执行.定期执行.线 ...
- Redis哨兵模式高可用部署和配置
一.Redis 安装配置 1.下载redis安装包 wget http://download.redis.io/releases/redis-4.0.9.tar.gz 2.解压安装包 tar -zxv ...
- 学习4412开发板gdb和gdbserver的调试
因为有很多的小伙伴是从单片机转过来的,用惯了单片机上的JLINK调试程序,换到Linux上非常的不习惯.确实,如果能设置断点,单步调试,查看变量,那确实是太爽了,那么在我们的Linux可以做到吗,答案 ...
- 3)PHP的http 并发
详解浏览器最大并发连接数:http://www.iefans.net/liulanqi-zuida-bingfa-lianjieshu/ 并发连接数对浏览器加载速度的测试:http://www.ief ...