java学习日志
文章平均质量分 69
wqe111111
这个作者很懒,什么都没留下…
展开
-
接口
接口定义的是多个类共同的公共行为规范,这些行为是与外部交流的通道,这就意味着接口里通常是定义一组公用方法。 接口的定义 接口定义使用interface关键字,接口定义的基本语法如下: [修饰符] interface 接口名 extends 父接口1,父接口2... { 零到多个常量定义; 零到多个抽象方法定义; } 上面语法的详细说明如下: (1)修饰符可以是publi原创 2013-10-10 17:27:30 · 421 阅读 · 0 评论 -
String类
String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列式不可改变的,直至这个对象被销毁。 String类里常用的几个方法: String concat(String str):将该String对象与str连接在一起。与java提供的字符串连接运算符+的功能是相同。 boolean endsWith(String suffix):返回该String对象原创 2013-10-10 17:28:00 · 505 阅读 · 0 评论 -
AWT 容器
java.awt包中提供了两种基类来表示图形界面元素:Component和MenuComponent,其中Component代表一个能以图形化方式显示出来,并可与用户交互的对象,例如Button代表一个按钮,TextField代表一个文本框等,而MenuComponent则代表了图形界面的菜单组件,包括MenuBar(菜单条)、MenuItem(菜单项)等子类。 除此之原创 2013-10-10 17:28:09 · 1000 阅读 · 0 评论 -
Java AWT实现的计算器代码
import java.awt.*;import java.awt.event.*;import java.util.regex.Matcher;import java.util.regex.Pattern;import java.lang.Integer;import java.lang.Math;public class Calculator { private Frame f=new Fra原创 2013-10-10 17:28:13 · 816 阅读 · 0 评论 -
AWT 菜单
AWT中的菜单由如下几个类组合而成: (1)MenuBar:菜单条,菜单的容器。 (2)Menu:菜单组件,菜单项的容器。它也是MenuItem的子类,所以可作为菜单项使用。 (3)PopupMenu:上下文菜单组件(右键菜单组件)。 (4)MenuItem:菜单项组件。 (5)CheckboxMenuItem:复选框菜单组件。 (6)MenuShortcut:菜单快捷键组件。 Me原创 2013-10-10 17:28:18 · 544 阅读 · 0 评论 -
Swing JPopupMenu
在Swing组件中添加右键菜单无须像AWT中那样繁琐,只需要简单地调用setComponentPopupMenu 方法来设置右键菜单即可,无须编写事件监听器。由此可见,使用Swing组件编写图形界面程序更加简单。 public class TestJPopupMenu{ JFrame f=new JFrame("测试"); JTextArea ta=new JTextArea(3,20); J原创 2013-10-10 17:28:22 · 615 阅读 · 0 评论 -
【转载】HashMap与HashCode()、equals()的关系---在HashMap中实现以对象为键(key)
看过HashMap的源代码会发现,HashMap是基于散列函数,以数组和链表的方式实现的。而对于每一个对象,通过其hashCode()方法可为其生成一个整形值(散列码),该整型值被处理后,将会作为数组下标,存放该对象所对应的Entry(存放该对象及其对应值)。equals()方法则是在HashMap中插入值或查询时会使用到。当HashMap中插入值或查询值对应的散列码与数组中的散列码相等时,则转载 2013-10-10 17:29:34 · 542 阅读 · 0 评论 -
Java 打印对象和toString 方法
class Person{ private String name; public Person(String name) { this.name=name; } public void info() { System.out.println("此人名为:"+name); }} public class PrintObject{ public st原创 2013-10-10 17:27:35 · 552 阅读 · 0 评论 -
==和equals比较运算符
Java程序中测试两个变量是否相等有两种方式,一种是利用==运算符,另一种是利用equals方法。 当使用==运算符(注意:==永远是判断内存地址是否相等,对于基本数据类型,没有对象的地址传递,但对于对象,就要对象地址的传递)判断两个变量是否想等时,如果2个变量时基本类型的变量,且都是数值型(不一定要求数据类型严格形同),则只要两个变量的值相等,使用==判断则返回true。原创 2013-10-10 17:27:37 · 465 阅读 · 0 评论 -
Java集合概述
在编程时,常常需要集中存放多个数据,当然我们可以使用数组来保存多个对象。但数组长度不可变化,一旦初始化数组时指定了数组长度,则这个数组长度是不可变的,如果需要保存个数变化的数据,数组就有点无能为力了;而且数组无法保存具有映射关系的数据,如成绩表:语文-79,数学-80,这种数据看上去像两个数组,但这个两个数组元素之间有一定的关联关系。 为了保存数量不确定的数据,以及保存具有映射关原创 2013-10-10 17:27:50 · 399 阅读 · 0 评论 -
BigDecimal类
前面介绍float、double两种基本浮点类型时已经指出,这两个基本类型的浮点数容易引起精度丢失,先看如下程序: public class TestDouble{ public static void main(String[] args) { System.out.println("0.05+0.01="+(0.05+0.01)); System.out.println("1.0-0原创 2013-10-10 17:28:02 · 450 阅读 · 0 评论 -
异常处理——使用finally回收资源
有时候,程序在try块里打开了一些物理资源(例如数据库连接 、网络连接和磁盘文件等),这些物理资源都必须显示回收,因为Java的垃圾回收机制不会回收任何物力资源,垃圾回收机制只能回收堆内存中对象所占用的内存。 为了保证一定能回收try块中打开的物理资源,异常处理机制提供了finally块。不管try块中的代码是否出现异常,也不管哪个catch块被执行,finally块总会被执行。J原创 2013-10-10 17:28:04 · 1076 阅读 · 0 评论 -
JComponent的getInputMap()和getActionMap()方法
JComponent类里提供的getInputMap()方法返回一个InputMap对象,该对象用于将KeyStroke对象(代表键盘或其他类似输入设备的一次输入事件)和名字关联;getActionMap()方法返回一个ActionMap对象,该对象用于将指定名字和Action(Action接口是ActionListener的子接口,可作为一个事件监听器使用)关联,从而可以允许用户通过键盘操作来代原创 2013-10-10 17:28:25 · 2839 阅读 · 1 评论 -
事务的概念和MySQL事务支持
事务是由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行。程序和事务是两个不同的概念。一般而言:一段程序中可能包含多个事务。 事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这四个特性也简称ACID性。 (1)原子性:事务是应用中最小的执行单位,原创 2013-10-10 17:28:27 · 469 阅读 · 0 评论 -
MySQL command Line 外键约束(FOREIGN KEY)
建立外键约束可以采用列级约束语法和表级约束语法,如果仅仅对单独的一个数据列建立外键约束,则使用列级约束语法即可;如果需要对多个列组合创建外键约束,或者需要为外键约束指定名字则必须使用表级约束语法。 使用列级约束语法建立外键约束直接使用references关键字,references指定该列参照的哪个主表,以及参照主表的哪一列。如下SQL语句所示:create table teach原创 2013-10-10 17:28:34 · 709 阅读 · 0 评论 -
线程的创建和启动
Java中有两种方法创建线程,一种是继承Thread类创建线程类;另一种是实现Runnable接口来创建并启动多条线程。 1.通过继承Thread类来创建并启动多线程的步骤如下: (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就是代表了线程需要完成的任务。 (2)创建Thread子类的实例,即创建了线程对象。 (3)用线程对象的start方法来启动该线程。原创 2013-10-10 17:28:36 · 436 阅读 · 0 评论 -
线程控制
1.join 线程 Thread提供了让一个线程等待另一个线程完成的方法:join()方法。当在某个程序执行流中调用其他线程的join()方法时,调用线程将被阻塞,直到被join方法加入的join线程完成为止。如下面程序所示:public class JoinThread extends Thread{ public JoinThread(String name) { super(name);原创 2013-10-10 17:28:40 · 405 阅读 · 0 评论 -
ResultSetMetaData和DatabaseMetaData
MetaData的意思是元数据,即描述其他数据的数据,因此ResultSetMetaData封装了描述ResultSet对象的数据,这些描述ResultSet对象的数据包括列名、列类型、列数、表名等信息;而DatabaseMetaData则封装了描述Database的数据,这些描述数据库的元数据包括表类型、数据库的全部数据表、表的主键、表的外键、数据库里的存储过程、某个表的全部数据列等待信息。原创 2013-10-10 17:28:43 · 516 阅读 · 0 评论 -
System类
System类提供了代表标准输入、标准输出和错误输出的类属性:并提供了一些静态方法用于访问环境变量、系统属性的方法;还提供了加载文件和动态链接库的方法。 public class TestSystem{ public static void main(String[] args) { //获取系统的所有环境变量 Map env=System.getenv(); for(String n原创 2013-10-10 17:27:57 · 489 阅读 · 0 评论 -
匿名内部类
匿名内部类适合创建那种只需要一次使用的类,匿名内部类的语法有点奇怪,创建匿名内部类时会立即创建一个该类的实例,这个类定义立即消失,匿名内部类不能重复使用。 定义匿名内部类的格式如下: new 父类构造器(实参列表) | 实现接口() { //匿名内部类的类体部分 } 从上面定义可以看出,匿名内部类必须继承一个父类,或实现一个接口,但最多只原创 2013-10-10 17:27:48 · 446 阅读 · 0 评论 -
单例(Singleton)类、final类和不可变类
1.单例(Singleton)类 大部分时候,我们把类的构造器定义成public访问权限,允许任何类自由创建该类的对象。但在某些时候,允许其他类自由创建该类的对象没有任何意义,还可能造成系统性能下降。例如系统可能只有一个窗口管理器,一个假脱机打印设备或一个数据库引擎访问点,此时如果在系统中为这些类创建多个对象就没有太大的实际意义。 如果一个类始终只能创建一个实例,则这个类被称为原创 2013-10-10 17:27:39 · 933 阅读 · 1 评论 -
枚举类
J2SE1.5新增了一个enum关键字,用以定义枚举类。从某种程度上来看,enum关键字和class、interface关键字的作用大致相似。 枚举类是一种特殊的类,它一样可以有自己的方法和属性,可以实现一个或者多个接口,也可以定义自己的构造器。一个java源文件中最多只能定义一个public访问权限的枚举类,且该源文件也必须和该枚举类的类名相同。 但枚举类终究不是普通类,它与普通类有如下简单原创 2013-10-10 17:27:32 · 462 阅读 · 0 评论 -
使用BufferedReader获取键盘输入
Scanner可以非常方便地获取键盘输入,但它是JDK1.5新增的工具类。在JDK1.5之前,程序通过BufferedReader类来读取键盘输入。 BufferedReader是Java IO 流中的一个字符、包装流,它必须建立在另一个字符流的基础上。但标准输入:System.in是字节流,程序需要使用转换流InputStreamReader类将其包装字符流。所以程序中用于获取键原创 2013-10-10 17:27:55 · 5727 阅读 · 0 评论 -
接口和抽象
接口和抽象都很像,它们都具有如下特征: (1)接口和抽象类都不能被实例化,它们都位于继树的顶端,用于被其它类实现和继承 (2)接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。 但接口和抽象类之间的差别非常大,这种差别主要体现在二者设计目的上,下面具体分析两者的差别。 接口作为系统与外界交互的窗口,接口体现的是一种规范。从某种原创 2013-10-10 17:28:11 · 397 阅读 · 0 评论 -
线程的生命周期
在线程的生命周期中,它要经过新建(new)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)五种状态。 新建:当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时它和其他Java对象一样,仅仅由java虚拟机为其分配了内存,并初始化了其成员变量。 就绪:当线程对象调用了start()方法之后,该线程处于就绪状态,Java虚拟机会为其创建原创 2013-10-10 17:28:38 · 425 阅读 · 0 评论 -
面向对象的三个特征
一.封装 封装是面向对象三大特征之一,它指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。封装实际上有两个方面的含义:把该隐藏的(对象的属性和实现细节)隐藏起来,把该暴露的(方法)暴露出来。这两个方面都需要通过使用Java提供的访问控制符来实现。 使用访问控制符 private访问控制原创 2013-10-10 17:28:45 · 397 阅读 · 0 评论 -
【转载】JAVA --String类笔试面试题
字符串对象是一种特殊的对象.String类是一个不可变的类..也就说,String对象一旦创建就不允许修改 String类有一个对应的String池,也就是 String pool.每一个内容相同的字符串对象都对应于一个pool里的对象. 1 看下面一段代码. String s = new String("abc"); String s1 = "abc"; String s2 = new原创 2013-10-10 17:28:48 · 382 阅读 · 0 评论 -
Java IO流
Java的IO流是实现输入/输出的基础,它可以方便地实现数据的输入/输出操作,Java中把不同的输入/输出源(键盘、文件、网络连接等)抽象表述为“流”(Stream),通过流的方式允许Java程序使用相同的方式来访问不同的输入/输出源。 Java把所有传统的个流类型(类或抽象类)都放在java.io包中,用以实现输入/输出功能。 按照不同的分类方式,可以将流分为不同的类型,下面我原创 2013-10-10 17:28:55 · 408 阅读 · 0 评论 -
抽象方法和抽象类
抽象方法和抽象类必须使用abstract修饰符来定义,有抽象方法的类只能被定义成抽象类,抽象类里可以没有抽象方法。 抽象类和抽象方法的原则如下: (1)抽象类必须使用abstract修饰符来修饰;抽象方法也必须使用abstract修饰符来修饰,抽象方法不能有方法体。 定义抽象方法只需要在普通方法上增加abstract修饰符,并把普通方法的方法体(也就是方法后括号括起来的部分)全部去掉原创 2013-10-10 17:27:41 · 585 阅读 · 0 评论 -
缓存实例的不可变类
不可变类的实例的状态不会变化,这样的实例可以安全地被其他与之关联的对象共享,还可以安全地被多个线程共享。为了节省内存空间,优化程序的性能,应该尽可能地重用不可变类的实例,避免重复创建具有相同属性值的不可变类的实例。 在JDK 1.5的基本类库中,对一些不可变类,如Integer类做了优化,它具有一个实例缓存,用来存放程序中经常使用的Integer实例。JDK 1.5的Integer类新增了一个原创 2013-10-10 17:27:44 · 449 阅读 · 0 评论 -
final方法
final 修饰方法不可重写,如果出于某些原因,不希望子类重写父类的某个方法,则使用final修饰该方法。 看下面的程序,下面程序试图重写final方法将会引发编译异常: public class TestFinalMethod { public final void test() { } } class Sub extends TestFinalMethod { //原创 2013-10-10 17:27:46 · 487 阅读 · 0 评论 -
使用Scanner获取键盘输入
使用Scanner类可以很方便地便获取用户的键盘输入,Scanner是一个基于正则表达式的文本扫描器,它可以从文件、输入流 、字符串中解析出基本类型值和字符串值。Scanner类提供了多个构造器,不同的构造器可接受文件、输入流、字符串作为数据,用于从文件、输入流、字符串中解析数据。 Scanner主要提供了两个方法来扫描输入: (1) hasNextXxx():是否还有下一原创 2013-10-10 17:27:53 · 974 阅读 · 0 评论 -
Checked异常和Runtime异常体系
Java的异常被分为两大类:Checked异常和Runtime异常(运行时异常)。所有RuntimeException类及其子类实例被称为Runtime异常;不是RuntimeException类及其子类的异常实例则称为Checked异常。 只有Java语言提供了Checked异常,其他语言都没有提供Checked异常。Java认为Checked异常都是可以被处理(修复)的异常原创 2013-10-10 17:28:06 · 518 阅读 · 0 评论 -
Swing ButtonGroup
ButtonGroup只能放JRadioButton,JRadioButtonMenuItem和JToggleButton的实例,放置在ButtonGroup的按钮只能有一个被选中。 但ButtonGroup它本身不是控件,不能放容器里,例如下面程序:public class ButtonGroupTest { public static void main(String[] ar原创 2013-10-10 17:28:20 · 785 阅读 · 0 评论 -
JDBC编程步骤
JDBC编程大致按如下步骤进行: (1)加载数据库驱动。通常我们使用Class类的forName静态方法来加载驱动。例如如下代码: Class.forName(driverClass) driverClass就是数据库驱动类所对应的字符串 例如加载MySQL的驱动采用如下代码: //加载MySQL驱动 Class.forName原创 2013-10-10 17:28:29 · 358 阅读 · 0 评论 -
在AWT中绘图
在Component类里提供了三个和绘图有关的方法: (1)paint(Graphics g):绘制组件的外观。 (2)update(Graphics g):调用paint方法,刷新组件外观。 (3)repaint():调用update方法,刷新组件外观。 上面三个方法的调用关系为:repaint方法调用update方法;update方法调用paint方法。 Container类中的u原创 2013-10-10 17:28:31 · 1091 阅读 · 0 评论 -
文件过滤器
在File的list方法中可以接受一个FilenameFilter参数,通过该参数可以只列出符合条件的文件。 FilenameFilter接口里包含了一个accept(File dir,String name) 方法,该方法将依次对File的所有子目录、子文件夹进行迭代,如果该方法返回true,则list方法列车该子目录或者子文件夹。 public class FilenameFilter原创 2013-10-10 17:28:53 · 403 阅读 · 0 评论 -
HashMap与HashCode()、equals()的关系---在HashMap中实现以对象为键(key)
看过HashMap的源代码会发现,HashMap是基于散列函数,以数组和链表的方式实现的。而对于每一个对象,通过其hashCode()方法可为其生成一个整形值(散列码),该整型值被处理后,将会作为数组下标,存放该对象所对应的Entry(存放该对象及其对应值)。equals()方法则是在HashMap中插入值或查询时会使用到。当HashMap中插入值或查询值对应的散列码与数组中的散列码相等时,则转载 2013-10-10 17:29:41 · 1101 阅读 · 0 评论 -
BufferedReader的read和readLine方法使用需要注意的地方
项目中有一次使用BufferedReader的readLine方法,每次读一行,发现读出来的每一行的内容,少一个字节1.读取一个txt文件,方法很多种我使用了字符流来读取FileReader fr = new FileReader("f:\\TestJava.java");BufferedReader bf = new BufferedReader(fr);int len;while((l原创 2013-10-10 17:30:11 · 1332 阅读 · 0 评论