异常处理—处理错误的机制
try{}...catch(Exception e){}处理程序员可以控制和用户输入有误的情况
throws Exception将异常抛给上一级处理,如果不能处理,最终抛给虚拟机处理
适合比较严重的异常和程序员无法预料或无法处理的异常
finally 起到异常处理出口的作用,用在try...catch语句的最后
无论是否出现异常Finally中的语句肯定会被执行
用throws抛异常时,如果向主调处抛异常的方法是从父类继承的或者是从接口实现的,
那么覆盖父类方法或实现接口方法时,如果父类中的原方法或接口中的原抽象方法没有抛异常,
则子类覆盖父类的方法或实现借口也不能抛异常,只能用try catch
equals方法,用重写来覆盖,配合多态实现强大的比较功能
对象间不能用"=="来比较,因为默认比较的是内存地址
帮助文档 查询API
集合类,专门用来存放其他类的"容器",主要完成一些数据库和数据结构的功能
1.List结构集合类
ArrayList LinkedList Vector Stack
2.Map结构集合类
HashMap HashTable
3.Set结构集合类
HashSet TreeSet
4.Queue结构集合类和Queue接口
ArrayList.size()/add()/get()/remove()/set()/
java.io
BufferedReader sr=new BufferedReader(new InputStreamReader(System.in));
LinkedList.addFirst()/addLast()/getFirst()/getLast()
Map结构类克服数据冗余
HashMap
put(K key,V value)关联指定键与指定值(键值相同的自动覆盖)
containsKey("key") 如果映射中包含该键,返回真
get("key") 通过键值取出数据
遍历:
HashMap ee=new HashMap();
Iterator it=ee.keySet().iterator(); //将所有键值都激活并取出
while(it.hasNext()){
String key=it.next().toString();
Sp sp=(Sp)ee.get(key);
}
List没有键值,Map有键值(能唯一标识某一事物而单独添加的属性)
ArrayList和HashMap都是线程异步的,效率高但安全性低
Vector和Hashtable都是线程同步的,效率低但安全性高(网络)
泛型:弥补程序运行中类型转换的错误
有了泛型,在集合类中get对象的时候,就不用再强转了
声明时可用<L>
通过泛型,将类型L在new时定下来
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。<xx>
这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,以提高代码的重用率
反射机制是将泛型固定的类的所有方法和成员全部可以显示出来,
(在泛型类中定义一个函数,调用泛型对象的getClass()等方法)
以供程序员可以确定程序的编写是否有误的机制
图形化用户界面GUI
组件:菜单/标签/文本框/滚动条/单选/复选/按钮
容器:组件必须放在容器里才能正常显示
将组件合理有序的排列和分布在容器中称为布局
Awt(抽象窗口工具包)中常见的布局管理器
BorderLayout边界布局管理器
FlowLayout流式布局管理器
GridLayout网格布局管理器
import java.awt.*;
import javax.swing.*;
JFrame 窗口类
常用方法
setVisible(true) //可见
setTitle("xx") //设置标题
setSize(350,180) //设置大小,像素(与显示器设置有关)
setLocation(100,260)//设置位置
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)//关闭后释放内存
setVisible(true) //设置可见
setResizable(false) //不可放大
setIconImage((new ImageIcon(".jpg")).getImage()) //设置窗口图标
add添加
JButton按钮类
总结:
1.继承JFrame
2.在最上方定义组件
3.在构造方法中创建组件
4.在构造方法中添加组件
5.设置窗体属性
6.显示窗体
7.在主函数中创建对象
8.所有布局管理器都可以添加任意组件
this.setLayout(new GridLayout(3,3,15,15)); //3行3列x:15像素y:15像素
//java默认的是边界布局管理器
this.setResizable(false); //不允许边框变化
JPanel 面板类(类似网页中的框架) 综合布局
其他组件
JLabel 标签类
JTextField 文本框
JPasswordField 密码框
JCheckBox 复选按钮
JRadioButton 单选按钮
ButtonGroup //把单选按钮放进一个组里
JComboBox 下拉列表框
JList 列表(JScrollPane(JList) 滚动条)
JTextArea 文本域
拆分窗口JSplitPane(JSplitPane.HORIZONTAL_SPLIT,lb,bq);
//水平分割,成列表和标签
JLabel(new ImageIcon("xxx.jpg"))
JTabbedPane.add(mb) 选项卡
记事本界面
JMenuBar 菜单面板 (setMenuBar)
JMenu 菜单(不参与布局)/二级菜单
JMenuItem 菜单项(是最终的,不可以再有下一级菜单)
JToolBar 工具条
/*
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。
处理器run出来的
线程是指进程内的一个执行单元,也是进程内的可调度实体
它是比进程更小的能独立运行的基本单位
通常都是把进程作为分配资源的基本单位,
把线程作为独立运行和独立调度的基本单位
*/
有序严谨的指令集称为程序
程序的同时多运行称为进程
程序中不同的执行路径称为线程
多线程编程简单,效率高,易于资源共享
线程是由CPU自动控制的,程序员无法控制
线程同步:
一段程序执行中,无论成功还是失败,其他线程
都会等待这段程序执行完毕,才会转入其他线程.(ATM)
优点:保证程序的完整性和安全性
创建新执行线程有两种方法。
1.是将类声明为 Thread 的子类。
该子类应重写 Thread 类的 run 方法
调用该子类的start()方法
2.是声明实现 Runnable 接口的类。
该类然后实现 run 方法
将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数
调用Thread类的start()方法
谁调用start方法,程序就去自动调用run方法
★start()会单独开启一个线程,而不是直接调用
t1.setPriority(Thread.NORM_PRIORITY+3);
//默认优先级为5,数字越大优先级越高
优先级不是绝对的,只是几率大小
线程的睡眠
Thread.sleep(1000) //该线程睡眠1000ms==1s
线程的让步与阻塞
Thread.yield(); /让步(让一下)
线程对象.join(); //阻塞时将当前线程暂停,直至
调用join函数所调用的线程执行完毕,才继续执行程序
(其他线程重新竞争CPU)
买票问题(线程同步)
synchronized //既可以修饰代码块,又可以修饰函数
用来给对象和方法或者代码块加锁,当它锁定一个方法或者
一个代码块的时候,同一时刻最多只有一个线程执行这段代码
生产消费问题
wait() //等待
notify()//叫醒另一个线程,是在当前线程处于就绪状态的前提下
IO流(特殊的类)
流是用于连接程序(内存)和设备(硬盘)之间的管道,主要用于数据传输
四大基本抽象流
输入流/输出流/字节流/字符流
文件流/缓冲流/转换流/数据流/Print流/Object流
字符流 字节流
输入流 read input
输出流 write output
硬盘---->内存 读操作(输入流)
内存---->硬盘 写操作(输出流)
FileReader/FileWriter字符流 复制文本文件(1汉字==2字节)
FileInputStream/FileOutputStream字节流 复制音乐视频图片文件
JAVA中1字符占用2字节
JAVA中read()的返回值为整型
flush() //将流中残留内容全部输入或输出,写在文件关闭之前
虚拟内存
缓冲流(速度快)
BufferedInputStream/BufferedOutputStream(缓冲字节流)
BufferedReader/BufferedWriter(缓冲字符流)
转换流是将JAVA不允许的情况变为可能
InputStreamReader(System.in) //System.in是字节流,通过该方法转换成字符流
空字符串a=""和a=null的区别
null是没有指向任何地址,没开辟内存空间
""开辟了内存空间,只不过里面没有任何字节
print流 把数据写入文件
DataOutputStream中的write(data)方法的结果是计算机识别的二进制形式
PrintStream中的println(data)方法的结果是字符串形式
System.setOut(PrintStream输出文件)
System.out.println()向该文件打印(默认是屏幕)
也可以由PrintStream对象直接调用println()
Object流,数据写入文件中是乱码,读取出来是好的
transient关键字,忽略,外界传不进来数据
implements Serializable 该接口是空的,起标志作用
File获取文件属性/创建文件(夹)/遍历文件夹下的文件
绘图
extends JPanel
public void paint(Graphics g) //覆盖父类的方法
g.drawxxx(x,y)/g.setxxx
paint方法会在以下三种情况下被系统自动调用
1.启动程序
2.窗口大小发生变化
3.运行repaint函数时
class A extends JPanel{ //画笔类
public void paint(Graphics g){
//g.drawOval(50, 60, 80, 80); //圆形
//g.drawLine(0,100,400,100); //线条
//g.drawRect(50, 50, 50, 200); //矩形
//g.draw3DRect(50, 50, 300, 100, true);//凹凸
//g.setColor(Color.pink); //颜色
//g.fillRect(150, 150, 100, 100); //default black
//g.setColor(Color.green);
//g.fillOval(50, 50, 100, 100);
//Image tp=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/lufei.jpg"));
//g.drawImage(tp, 0, 0, 350, 100, this);
//绘图用的图片要拷贝在src目录下
//g.setFont(new Font("华文彩云",Font.BOLD,50));
//g.drawString("大家好!", 100, 150);
}
}
事件处理机制import java.swt.event.*;
事件监听接口
implements ActionListener
抽象方法actionPerformed(ActionEvent e)
xx.addActionListener(ActionListener实现对象) //添加监听
xx.setActionCommand("string") 动作命令,string区别不同事件
方法actionPerformed(ActionEvent e)实现监听行为
同一对象可被多个监听对象监听
同一监听对象也可以监听多个对象
控件事件(主函数或其他类) implements ActionListener 方法actionPerformed(ActionEvent e)
键盘事件(JPanel子类) implements KeyListener
方法keyPressed(KeyEvent e)任意键�
JAVA入门实例代码及学习笔记
4星 · 超过85%的资源 需积分: 35 29 浏览量
2015-10-08
17:27:56
上传
评论 1
收藏 31KB RAR 举报
yinmochan
- 粉丝: 0
- 资源: 4
最新资源
- 基于Matlab人脸肤色定理的教师人数统计+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab霍夫曼变换的表盘读数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab火灾烟雾检测源码带GUI界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的恶劣天气交通标志识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的霍夫曼变换的表盘示数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的车道线识别系统 +源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的教室人数统计系统带Gui界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的教室人数统计系统带Gui界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB 的霍夫曼变换答题卡识别源码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab+bp神经网络的神经网络汉字识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈