Java程序设计教程笔记

Java程序设计教程

格式化输出

NumberFormat 类

通过类名调用静态方法请求执行。

String format(double number)
根据本对象的模式将number格式化为字符串,并返回该字符串对象。
static NumberFormat getCurrencyInstance()
返回代表本地化的当前货币格式的NumberFormat对象。
static NumberFormat getPercentInstance()
返回代表本地化的当前百分率格式的NumberFormat对象。

DecimalFormat 类

使用new运算符创建对象。

DecimalFormat(String pattern)
0.\#\#\#
void applyPattern(String pattern)
String format(double numbers)

String类

String对象是不可变的。

String(String str)
char charAt(int index)
int compareTo(String str)
String concat(String str)
boolean equals(String str)
boolean equalsIgnoreCase(String str)
int length()
String replace(char oldChar, char new Char)
String substring(int offset, int endIndex)
 返回从索引offset开始到endIndex - 1处的字串
String toLowerCase()
String toUpperCase()

枚举型

枚举类型的值是具有该枚举类型的静态变量。

enum Season {winter, spring, summer, fall}
Season time;
time = Season.spring;

包装器

Integer(int value)
byte byteValue()
double doubleValue()
float floatValue()
int intValue()
long longValue()
将该Integer对象的值转换为相应的基本数据类型值
static int parseInt(String str)
将指定字符串str中的值转换为相应的int型值,并返回该值
static String toBinaryString(int num)
static String tohexString(int num)
static String toOctalString(int num)
分别返回一个表示整型数num转换为二进制、十六进制或八进制值形式的字符串

UML类图

UML代表统一建模语言(Unified Modeling Language)

每个类用一个矩形表示,其中由三部分组成:类名、属性(数据)和操作(方法)。

<>实现类与接口之间用虚线箭头连接,空心箭头一端是接口。

+表示public可见性,-表示private可见性

方法的分析

method

组件与容器

容器是一个保存和组织其他组件的特殊GUI组件,框架和面板就是两种Java容器。

框架(frame)用于显示基于GUI的Java程序界面,一个框架显示为具有标题栏的独立窗口,由JFrame类定义。

面板(panel)自身不能独立显示,只能作为其他容器的组成部分显示,主要作用是在GUI中协助组织其他组件,由JPanel类定义。

每一个容器都由布局管理器管理

JFrame frame = new JFrame("Nested Panels");
JPanel primary = new JPanel();
JPanel subPanel1 =new JPanel();
subPanel1.setPreferredSize(new Dimension(150,100));
JLabel label1 = new JLabel("One");
subPanel1.add(label1);
primary.add(subPanel1);
frame.getContentPane().add(primary);
  • 按钮JButton

  • 单行文本框JTextField

  • 对话框JOptionPane

static String showInputDialog(Object msg)    
  显示一个包含指定提示信息msg和一个单行文本输入区的对话框,返回单行文本输入区中的内容。
static int showConfirmDialog(Component parent, Object msg)    
 显示一个包含指定提示信息msg和Yes/No两个选项按钮的对话框。
static void showMessageDialog(Component parent, Object msg)
 显示一个包含指定提示信息msg的对话框,如果父组件parent为空,则对话框会在屏幕上居中显示。
  • 图像
ImageIcon icon = new ImageIcon("devil.gif");
label = new JLabel("Devil Left", icon, SwingConstants.CENTER);
label.setHorizontalTextPosition(SwingConstants.LEFT);
  • 标签窗格JTabledPane

图形用户界面

在Java中建立图形用户界面程序至少需要三种类型的对象:

  • 组件

  • 事件

  • 监听器

事件一般代表用户的动作

监听器“等待”某个事件的发生并做出某种反应。

为了创建一个有图形用户界面的Java程序,需要:

  • 实例化并设置必要的组件

  • 实现监听器类,定义某种事件发生时程序应该采取的动作

  • 建立监听器类与产生事件的组件之间的联系

布局管理器

容器的布局管理器决定容器中的所有组件的外观表现。

当组件有变化时,容器中的组件会根据布局管理器的原则自动进行重新排列。

布局管理器描述
边界布局管理器将组件组织为5个区域:北区、南区、东区、西区和中心区
盒式布局管理器将组件按单独的一行或一列组织
卡式布局管理器将组件组织为一个区域,任何时候只有一个组件是可见的
流式布局管理器从左到右组织组件,需要时就开始新的一行
栅格布局管理器将组件组织到多行、多列的矩形网格中
栅格袋布局管理器将组件组织到多行、多列组成的网格单元中,并允许组件占据多个单元位置
  1. 流式布局管理器

    Jpanel默认情况下使用的布局管理器。

    setLayout(new FlowLayout());
    
  2. 边界布局管理器

    根据系统的功能需求,某个特定容器可以只使用其中某几个区域。

    setLayout(new BorderLayout())
    
  3. 栅格布局管理器

    将按钮加入容器时,默认是从左到右、从上到下依次填充栅格。

    setLayout(new GridLayout(2,3))
    
  4. 盒式布局管理器

    BoxLayout类的构造方法的第一个参数是由它管理的组件,所以对每一个组件都必须创建一个新的BoxLayout对象。不能为整个容器设置全局的垂直或水平间隔,可以增加不可见组件:尺寸固定的刚性区域(rigid area)creatRigidArea和可充满容器某部分额外空间的粘附(glue)组件creatHorizontalGluecreatVerticalGlue

    setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
    add(Box.creatRigidArea(new Dimension(0,10)));
    add(Box.creatVerticalGlue());
    

边框

Swing组件可以设置边框,边框并不是组件的一部分。

边框描述
空边框在组件四周设置缓冲区,但没有视觉效果
线型边框在组件四周画一条线
凹槽边框在组件四周画凹槽
斜角边框在组件四周画凸起或凹陷的斜角
标题边框在边框上或四周包含一个标题
花色边框分别制定四个边的宽度,各边用固定颜色或图片填充
组合边框两种边框的组合
Jpanel p1 = new Jpanel();
p1.setBorder(BorderFactory.createLineBorder(Color.red,3));
p2.setBorder(BorderFactory.createEtchedBorder());
p3.setBorder(BorderFactory.createRaisedBevelBorder());
p4.setBorder(BorderFactory.createLowerBevelBorder());

TitleBorder tb = BorderFactory.createTitledBorder("Title");
tb.setTitleJustificatin(TitleBorder.RIGHT);
p5.setBorder(tb);

Border b1 = BorderFactory.creatLineBorder(Color.blue,2);
Border b2 = BorderFactory.creatEtchedBorder();
p6.setBorder(BorderFactory.creatCompoundBorder(b1,b2));

Border mb = BorderFactory.createMatteBorder(1, 5, 1, 1, Color.red);
p8.setBorder(mb);  

容器层次结构

通过将几个组件组合到一个容器中,再将容器相互嵌套,就建立了图形界面的容器层次结构。
层次结构

鼠标事件

鼠标按下、鼠标释放、鼠标单击、鼠标进入、鼠标退出:鼠标移动、鼠标拖曳。

Timer类

定时器对象按相等的时间间隔时间产生一个动作事件。

Timer(int delay, ActionListener listener)
  该事件由指定的监听器处理
void addActionListener(ActionListener listener)
  给计时器添加一个动作监听器
boolean isRunning()
void setDelay(int delay)
void start()
void stop()

ArrayList 类

ArrayList<E>()
boolean add(E obj)
void add(int index, E obj)
void clear()
E remove(int index)
E get(int index)
int indexOf()
boolean contains(Object obj)
boolean isEmpty()
int size()

类间关系

依赖关系

一个类依赖于另一个类,一个类的方法需调用另一个类的方法。

通常应该最小化类间的依赖关系强度。

同一个类对象之间的依赖性。

聚合关系(aggregation)

一个聚合对象由其他对象组成,形成一种有的关系。

聚合关系是依赖关系的特殊类型。

继承关系

接口

java接口(interface)是一组常量和抽象方法的集合,接口不能被实例化。

Comparable接口

compareTo方法
obj1.compareTo(bbj2)
如果obj1小于obj2返回负值;

Iterator接口

Iterator接口由代表一个对象集合的类使用,提供了在对象集合中每操作一次移动到下一个对象的方法。

迭代器是一种对象,该对象提供了一些方法有助于一次处理某个集合。

hasNext()next()remove()

方法设计

可以将对象提供的一个复杂服务分解为由多个方法支持的简单服务。

将对象传递给方法时,实际上传递的是这个对象的引用。

方法名、及方法的参数个数、类型、和顺序,称为方法的签名(signature)。

继承

父类的公共方法或变量可以在子类中通过名称访问,或者通过子类对象访问;而父类的私有方法或变量不能在子类中访问或通过子类对象访问。

抽象类不一定包含抽象方法,由抽象类派生的子类必须重写所有父类的抽象方法,否则该子类仍然是抽象类。

每一次的派生都应该具有一种“是”关系,子类是一种更具体的父类版本;要让每一个类管理自己的数据,因此应使用super引用调用父类构造方法,并且适当地调用重写方法;用抽象类为类层次结构中底层的具体类定义公共类接口;final方法可以被继承,不能被重写。

多态

每当发现有不同类型的对象执行相同类型的行为时,就存在利用多态性方法的机会。

由继承实现多态性

一个引用变量可以指向有继承关系的任何类的任何对象,实际调用的方法版本取决于对象的类型而不是引用变量的类型。

利用接口实现多态性

接口名可以用于声明对象引用变量,一个接口引用变量可以指向任何实现该接口的类的对象。

当使用接口引用变量时,只能调用定义在接口中的方法,即使接口引用变量所指向的对象还有其他一些可用方法,也不能调用。

像基于继承的多态性引用一样(父类名可用作方法参数的类型),接口名也可以用做方法参数的类型,使得任何实现同一接口的类对象都可以作为参数传给方法

将多态性引用作为一个方法的形参是一种功能很强的技术,使方法能控制传给它的参数的类型,并且具有可接收不同类型参数的灵活性。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值