Chinaunix首页 | 论坛 | 博客
  • 博客访问: 107502
  • 博文数量: 106
  • 博客积分: 2025
  • 博客等级: 大尉
  • 技术积分: 1165
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-06 12:51
文章分类

全部博文(106)

文章存档

2012年(106)

我的朋友

分类:

2012-05-08 17:07:15

弄清楚JAVA的这些重点就可以学习android

 

面向对象思想
1
、封装
属性:使用private修饰,对外界隐藏。
private boolean flag=true/false
boolean getFlag(){}
功能:(方法,函数)实现细节的隐藏
2
、继承:extend 通过已有的类扩展新的类
全盘皆收
Java
的类和类之间只有单继承
Class
父类
{
抽烟();
}
Class
子类 extends 父类
{
}
3
、多态:
(同一类域)的(不同对象)在调用(相同的方法)的时候(表现不同)。
注意:类里边定义成员的地方,不可再设置成员的属性,不然不报错,成员属性在方法中设置。
二、方法(函数)
完成特定功能的代码段:入口:参数列表的限制,出口:返回值类型的限制;保证流入数据和流出数据的正确性
面包 面包机(水,面粉,糖)
{
//
制作面包的细节
}
1
、访问修饰符:publicprivateprotected,默认
2
、返回值类型:与return 中表达式的数据类型保持一致
3
throws Exception :声明抛出异常的种类


String
StringBufferString用于处理简单的字符串,但大量的字符串连接操作可能导致垃圾的大量出现,建议使用StringBuffer处理连接操作。
内存中的情况:String——当两个字符相加的时候调用(str1=str1+str2),它会再开辟一个内存空间存放str1+str2,然后把该内存空间的值赋给str1,而StringBuffer则不会再开辟空间,而是在传过来的元数据地址上直接操作。


this
:当前对象的引用
this.
实例变量
this.
成员方法();
this(
参数列表);调用本类存在的构造器

Package:包:文件夹
1.
作用:为.class文件进行归类;避免命名冲突
2.
定义了包的类进行编译后,类名将发生改变
格式:包名.类名.->类的全限定名

方法的重载
1
、方法名相同
2
、参数列表不相同
(1)
参数个数不同
(2)
参数类型不同
(3)
参数顺序不同
3
、返回值是否相同无关
函数指针使用函数名来表示;重载的方法函数名全都相同,重载的方法函数指针一致?
错,参数的个数不同,类型不同可以保证名字的唯一性
有编译原理可知:
add
int a intb addint aint bint c
编译成
[ ]_add_int_int_[ ]
[ ]_add_int_int_int_[ ]


继承:extend
1
、子类继承父类所有的方法及属性,构造器除外!
2
、继承是“is a”的关系
3
、继承:代码重用,模式
4
、类和类之间只准许单继承
5
、方法的重写(覆盖)必须是在继承里;派生类重写的方法的访问权限不能低于基类的权限。
(1)
具有相同的 参数列表,返回值类型,方法名,参数个数和参数类型
(2)
可见度不能缩小
(3)
声明抛出异常的种类不能增加
“Student” is a “Person”
class A
{
int a;
public A(int a){}
}
class B extends A
{
int b;
int c;
public B(int a,int b,int c)
{
super(a);//
调用父类存在的构造器;
//
只能放在子类构造器的第一行格式super(参数列表)
//
如果子类没有显示的调用父类的任何构造器,系统将自动调用父类默认的构造器
this(
参数列表)
super.
父类准许访问的属性;
this.
本类的属性;
super.
父类准许访问方法();
this.
本类的方法();
}
}
class C
{
int a;
int b;
int c;
public C(int a,int b,int c){}

}
B objB=new B(1,2,3)
C objC=new C(1,2,3)
选择原则?
B
继承内存使用原则就是链表
C
的内存使用原则是连续的
6
、接口:所有的方法都以声明的形式存在:
(1)
、一个类可以同时实现一个或多个接口(implement)当一个类实现一个或多个接口的时候,该类必须实现接口中所有声明的所有方法,否则,该类必须使用abstract进行修饰(抽象类:避免对实现不完整的类进行实例化/抽象类:部分方法以声明的形式存在)
(2)
、接口和接口之间可以多继承
(3)
、描述类的基本功能(最低的要求)。规范,标准
一个类可以继承多个接口
一个接口也可以继承多个接口

interface Soft
{
Sit();
Sleep();
}
interface Bed
{
Sit();
Sleep();
}
interface SofaBed extends Sofa
Bed
{}
class SofaBed implements Sofa,Bed
{
Sit(){};
Sleep(){};
}

类型 创建对象的引用 实例化 方法的实现
----------------------------------------------------------------------------------------------------
class
可以 可以 全部实现
abstract class
可以 不可以 部分实现
interface
可以 不可以 全未实现

GUI:图形用户界面
一、容器:
可以盛放组件(按钮,文本框等)或容器
顶级容器:不能再放子其他的容器中,最外层容器JFrame 它不能存放任何子组件和设置布局管理器
普通容器:JPanel
二、布局管理:摆放的方式
1
FlowLayout:流式布局
2
BorderLayout:边界式布局
3
GridLayout:网格式布局
4
CardLayout:卡式布局
考试系统
1
、用户模块
登录:按照用户名和密码检索
注册:增加
2
、考试模块
*****
重新填写,不跳转*******
答案超限[0--1000]
非法字符
***
保存答案,跳转********
放弃(未达或不填即空格) -1
有效答案

3、成绩显示模块

三、事件处理原理
1
、事件:所关注的对象的属性的改变。
Class ....Event
事件类:携带事件本身的相关信息
{
2
、事件源:发生事件的主题 Girl
3
、对事件的描述:事件的必要相关信息
}
4
、事件处理的范围 interface
监听:监视
Interface ....Listener
{
Happy();
Sad();
}
Btn.addActionListener
(nw ActionListener()
{
Pulbic void actionPerformed(ActionEvent e)
{
//
处理
}
}
)
Timer
:每个多长时间执行一次摸个任务
Timer timer=new Timer(
时间间隔/毫秒 1000,new ActionListener()
{
Public void actionPerformed(ActionEvent e)
{
//
执行的任务
}
})

单击JButton,在JTextFiedJtextArea中按回车,单击菜单项MenuItem会触发AticonEvent事件,有AticonEventListener监听 public void actionPerformed(ActionEvent e){}中做事件处理工作
JradioButton
JcheckBox 事件ItemEvent ItemListener public viod itemStateChage( )

组件:
JRadioButton
:单选 逻辑分组:ButtonGroup bg=new ButtonGroup()
JCheckBox
:复选
菜单:
JMenuBar
:菜单条
JMenu:
菜单
JMenuItem
:菜单项


Thread
一、概念
1
、进程
OS
:完整的任务(多个应用程序协同工作)
语言级别:一般单指一个独立的应用程序
2
、线程:是一个资源共享,独立运行,不可再分(原子性)的小任务。目的:提高效率
3
、线程进程关系:一个进程可以被合理的划分为多个线程
二、共享:
1
CPU:时间
2
data:地址空间,进程的地址空间独立
3
code::执行的任务
注意程序中共享资源的实现,程序中的共享资源是对同一内存节点的访问
三、需要掌握的方法
1
Thread.currentThread():获取当前线程对象的引用
2
sleep(毫秒):线程的挂起,需要异常处理。
3
run():线程执行的任务
4
start():线程的启动
*5
stop():线程的停止,禁用!
6
isAlive():判断线程是否处于活动状态
7
join():一个线程等待另一个线程结束之后再结束,
8
、控制线程的运行:ch10/PriorityTest.java
四、创建子线程类
1
、继承Thread
2
、实现Runnable接口
实现run()方法
两种方法之间效率上没有区别,由于java类和类之间只容许单继承,如果在继承一个类的同时还需要实现多线程,建议使用方式2回避单继承的局限性。

**五、线程的并发访问控制
(
在资源上使用,相当于给资源加了一个锁)(Java就业培训教程张孝祥p192 ch10/DeadLockTes.java SynchonizedTest.java)
1
、当多个线程操作同一个对象时,为了保证线程对对象操作的完整性,可以使用synchronized(次关键字和Thread没有任何联系)修饰对应的方法(同步方法)。
2
、当一个线程进入到另一个对象的同步方法,该线程将有机会(有可能,只有锁是空闲的时候)获得对象的锁,保证对象的完整操作,直到操作完毕释放对象的锁
3
、同步块:当线程操作的对象所属的类没有提供相应的同步方法且不可更改,可以使用同步块来代替
格式:synchronized(对象的应用)
{
//
对对象的操作
}
***Synchronized
区的代码可理解为操作系统的临界区代码,进入临界区是必须要得到临界区的锁,然后关闭锁,访问临界区,如果在临界区遇到break或抛出异常是线程会释放锁,不然只有退出临界区时才打开锁,其他线程才可以访问。锁在对象上 ,锁的作用域在Synchron修饰的代码区上

六、线程的死锁
产生的原因:对资源的竞争(主),不当的执行书序
逻辑错误,资源的交叉等待(同一时刻),且由于某些原因导致永远无法获得所等待的资源的异常。
建议:可以在对结果没有影响的情况下微调代码的顺序
七、生产者和消费者问题
T1 T2
八戒 馒头 厨子
Qtest.java
class Object
{
equals(){}
toString(){}
hashCode(){}
getClass(){}
//---------------------------
wait(){}:
使线程处于等待的状态
notify(){}
:唤醒处于等待状态的线程
notifyAll(){}
:唤醒处于等待状态的所有线程
1 来自Object
2 必须用在同步方法中即必须在synchronized修饰的方法或块中使用
3 用于线程之间的通信 ch10/QTest.java
4 通常和标志变量结合使用
5 谁做监控器就调用谁的这些方法,千万别搞错对象,不然会出错的
}

 

 

 

阅读(295) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~