201271050130-滕江南-《面向对象程序设计(java)》第十二周学习总结

项       目

内      容

这个作业属于哪个课程

https://www.cnblogs.com/nwnu-daizh

这个作业的要求在哪里

https://www.cnblogs.com/nwnu-daizh/p/11867214.html

作业学习目标

(1) 掌握Vetor、Stack、Hashtable三个类的用途及常用API;

(2)  掌握ArrayList、LinkList两个类的用途及常用API;

(3) 了解java集合框架体系组成;

(4) 掌握Java GUI中框架创建及属性设置中常用类的API;

(5) 了解Java GUI中2D图形绘制常用类的API;

第一部分:总结第九章、第十章理论知识

第九章 集合

1、Java的集合框架

Java的集合框架实现对各种数据结构的封装;

所谓框架就是一个类库,框架中包括一些通用接口和超类,编程者实现这些接口或者 创建这些超类的子类就可方便的设计程序所需要的类;

集合(或者称为容器)是一类包含多个元素并提供对所包含元素的操作方法的类,其包含的元素可以由同一类型的对象组成,也可以由不同类型的对象组成;

集合框架:Java集合类库的统一架构。

2、集合类的作用

(1)Java的集合类提供了对基本数据类型的支持;

(2)例如:Vector、Hashtable、Stack等;

3、集合类的使用

Java的集合类包含在java.util包中;

import java.util.*;

4、集合类的特点

  只容纳对象:

注意:数组可以容纳基本数据类型的数据和对象;

  如果集合类中想使用基本数据类型,邮箱利用集合类的灵活性,可以把基本数据类型数据封装成该数据类型的包装器对象,然后放入集合中处理;

5、新旧集合类

在Java1.0和JDK1.1中提供了Vector(矢量),Hashtable(哈希表),Stack(堆栈),Properties(属性集)等集合类,尽管这些类非常有用,但是彼此独立,缺少一个统一集中的机制。

6、Vector类

Vector类类似长度可变的数组;

Vector中只能存放对象;

Vector的元素通过下标进行访问;

Vector类关键属性:

——capacity表示集合最多能容纳的元素个数;

——capacityIncrement表示每次增加多少容量;

——size表示当前元素的集合;

7、Vector类的关键方法

——void  addElement(Object   obj)

——void   add(int  index,  Object   element)

——Object  elementAt(int   index)

——void   insertElementAt(Object   obj,  int  index)

8、Stack类:

Stack类是Vectoe类的子类;

Stack类描述堆栈数据结构,即FILO;

Stack类的关键方法:

——public   void  push(Object   item)        //把项压入栈顶

——public  Object   pop()       //移除栈顶元素对象并作为此函数的值返回该对象

——public  Object  peek()      //查看栈顶元素而不移除它

——public    Boolean   empty()      //测试堆栈是否为空

9、Hashtable类

Hashtable类通过键值来查找元素;

Hashtable类用散列码(hashcode)来确定值。所有对象都有一个散列码,可以通过Object类的hashCode()方法来获得;

10、集合的基本框架:

第10章 图形程序设计

10.1 AWT与Swing简介

1.用户界面(User Interface) 的概念:用户与计算机系统(各种程序)交互的接口
2.图形用户界面(Graphical User Interface)的概念: 以图形方式呈现的用户界面

3.AWT:

a. Java的抽象窗口工具箱(AbstractWindow Toolkit,AWT)包含在java.awt包中,它提供了许 多用来设计GUI的组件类和容器类。

b. AWT库处理用户界面元素的方法:把图形元素的创 建和行为委托给本地GUI工具箱进行处理。

c. 应用AWT编写依赖于本地用户界面元素GUI会暴露 出一些缺陷。例如,菜单、滚动条和文本域这些 用户界面元素,在不同的平台上,操作行为上存 在一些微妙的差异。

4. Swing

a. Swing用户界面库是非基于对等体的GUI工具箱。

b.Swing具有更丰富并且更方便的用户界面元素集合。
c.Swing对底层平台的依赖很少,因此与平台相关的bug很少。
d.Swing会带来交叉平台上的统一视觉体验。
e.Swing类库被放在javax.swing包里。

f. AWT与Swing的关系

(1) 大部分AWT组件都有其Swing的等价组件。
  (2) Swing组件的名字一般是在AWT组件名前面添加一个字母“J”,如:JButton,JFrame,JPanel等。

10.2 框架的创建

10.2.1 组件

  构成图形用户界面的元素,拿来即用 .

  用图形表示(能在屏幕上显示,能和用户进行交互) –Button、Checkbox、Scrollbar、Choice、Frame

10.2.2 容器

  容器是Java中能容纳和排列组件的组件。

  常用的容器是框架(Frame,JFrame) 例: Frame fra= new Frame(“这是一个窗口”);

  java.awt.Frame类的常用API(教材414页) void setResizable(booleanb) 缩放框架 void setTitle(String s) 设置框架标题 void setIconImage(Image image) 将Image用 作框架图标

10.2.3 添加组件

  Container类提供了一个方法add(),用来在容器类 组件对象中添加其他组件。

  容器本身也是一个组件,可以把一个容器添加到 另一个容器里,实现容器嵌套。

10.2.4 框架(Frame)的创建

(1)创建空框架 :在Java中,常采用框架(Frame)创建初始界面, 即GUI的顶层窗口

  AWT库中有一个基于对等体的Frame类。 该类的Swing版本为JFrame,JFrame是Frame子类。

(2)框架定位与框架属性
  定位: 常用Component类的setLocation和setBounds方法 常用属性

    Title:框架标题

    IconImage:框架图标

(3)确定框架大小 : 通过调用Toolkit类的方法来得到屏幕尺寸信息。
      Toolkit kit = Toolkit.getDefaultToolkit();   //生成 Toolkit对象
      Dimension screenSize= kit.getScreenSize();  //返回 Dimension对象的屏幕大小
      intscreenWidth= screenSize.width;  //获得Dimension对 象屏幕的宽度
      intscreenHeight=screenSize.height;   //获得Dimension 对象屏幕的高度

10.3 图形程序设计

图形编程这部分内容会在实验中有所体现。

包含以下特点:
1 处理2D图形
2 颜色的使用
2 字体的使用

10.4显示图像

(1)在Java应用程序中,一旦图像保存在本地或因 特网的某个位置上,就可以将它们直接读入到java 应用程序中。

  String filename = “…”; Image image= ImageIcon(filename).getImage();

(2)完成将一个图像文件加载到程序中,再调用 Graphics类提供的DrawImage()显示它。
  public void paintComponent(Graphics g)

  {   … g.drawImage(image, x, y, null); }

第二部分:实验部分

测试程序1:

//示例程序1
import java.util.Vector;
class Cat {
    private int catNumber;
    Cat(int i) {
        catNumber = i;
    }
    void print() {
        System.out.println("Cat #" + catNumber);
    }
}
class Dog {
    private int dogNumber;
    Dog(int i) {
        dogNumber = i;
    }
    void print() {
        System.out.println("Dog #" + dogNumber);
    }
}
public class CatsAndDogs {
    public static void main(String[] args) {
        Vector cats = new Vector();
        for (int i = 0; i < 7; i++)
            cats.addElement(new Cat(i));
        cats.addElement(new Dog(7));
        for (int i = 0; i < cats.size(); i++)
            ((Cat) cats.elementAt(i)).print();
    }
}

//示例程序2
import java.util.*; public class Stacks {
static String[] months = { "", "", "", "" }; public static void main(String[] args) {
Stack stk = new Stack();
for (int i = ; i < months.length; i++)
stk.push(months[i]);
System.out.println(stk);
System.out.println("element 2=" + stk.elementAt());
while (!stk.empty())
System.out.println(stk.pop());
}
}

//示例程序3
import java.util.*; class Counter {
int i = ; public String toString() {
return Integer.toString(i);
}
} public class Statistics {
public static void main(String[] args) {
Hashtable ht = new Hashtable();
for (int i = ; i < ; i++) {
Integer r = new Integer((int) (Math.random() * ));
if (ht.containsKey(r))
((Counter) ht.get(r)).i++;
else
ht.put(r, new Counter());
}
System.out.println(ht);
}
}

测试程序2:

import java.util.*;

public class ArrayListDemo {
public static void main(String[] argv) {
ArrayList al = new ArrayList();
// Add lots of elements to the ArrayList...
al.add(new Integer());
al.add(new Integer());
al.add(new Integer());
al.add(new String("hello"));
// First print them out using a for loop.
System.out.println("Retrieving by index:");
for (int i = ; i < al.size(); i++) {
System.out.println("Element " + i + " = " + al.get(i));
}
}
}

import java.util.*;
public class LinkedListDemo {
public static void main(String[] argv) {
LinkedList l = new LinkedList();
l.add(new Object());
l.add("Hello");
l.add("zhangsan");
ListIterator li = l.listIterator();
while (li.hasNext())
System.out.println(li.next());
if (l.indexOf("Hello") < )
System.err.println("Lookup does not work");
else
System.err.println("Lookup works");
}
}

 测试程序3:

package linkedList;

import java.util.*;

/**
* This program demonstrates operations on linked lists.
* @version 1.11 2012-01-26
* @author Cay Horstmann
*/
public class LinkedListTest
{
public static void main(String[] args)
{
List<String> a = new LinkedList<>();
a.add("Amy");
a.add("Carl");
a.add("Erica"); List<String> b = new LinkedList<>();
b.add("Bob");
b.add("Doug");
b.add("Frances");
b.add("Gloria"); // 将单词从B合并为A ListIterator<String> aIter = a.listIterator();
Iterator<String> bIter = b.iterator(); while (bIter.hasNext())
{
if (aIter.hasNext()) aIter.next();
aIter.add(bIter.next());
} System.out.println(a); // 从B中删除每个第二个单词 bIter = b.iterator();
while (bIter.hasNext())
{
bIter.next(); // 跳过一个元素
if (bIter.hasNext())
{
bIter.next(); // 跳过下一个元素
bIter.remove(); // 删除该元素
}
} System.out.println(b); // 批量操作:从A中删除B中的所有单词 a.removeAll(b); System.out.println(a);
}
}

 测试程序4

import javax.swing.*;
public class SimpleFrameTest
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setBounds(, ,, );
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

 测试程序5:

package sizedFrame;

import java.awt.*;
import javax.swing.*; /**
* @version 1.34 2015-06-16
* @author Cay Horstmann
*/
public class SizedFrameTest
{
public static void main(String[] args)
{
EventQueue.invokeLater(() ->
{
JFrame frame = new SizedFrame();
frame.setTitle("SizedFrame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
});
}
} class SizedFrame extends JFrame
{
public SizedFrame()
{
// 获取屏幕尺寸 Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int screenHeight = screenSize.height;
int screenWidth = screenSize.width; // 设置框架宽度、高度并让平台选择屏幕位置 setSize(screenWidth / , screenHeight / );
setLocationByPlatform(true); // 设置帧图标 Image img = new ImageIcon("icon.gif").getImage();
setIconImage(img);
}
}

 测试程序6:

package notHelloWorld;

import javax.swing.*;
import java.awt.*; /**
* @version 1.33 2015-05-12
* @author Cay Horstmann
*/
public class NotHelloWorld
{
public static void main(String[] args)
{
EventQueue.invokeLater(() ->
{
JFrame frame = new NotHelloWorldFrame();
frame.setTitle("NotHelloWorld");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
});
}
} /**
* A frame that contains a message panel
*/
class NotHelloWorldFrame extends JFrame
{
public NotHelloWorldFrame()
{
add(new NotHelloWorldComponent());
pack();
}
} /**
* A component that displays a message.
*/
class NotHelloWorldComponent extends JComponent
{
public static final int MESSAGE_X = ;
public static final int MESSAGE_Y = ; private static final int DEFAULT_WIDTH = ;
private static final int DEFAULT_HEIGHT = ; public void paintComponent(Graphics g)
{
g.drawString("Not a Hello, World program", MESSAGE_X, MESSAGE_Y);
} public Dimension getPreferredSize() { return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT); }
}

 实验总结

在本周的学习过程中,复习了上周内容即泛型程序设计的知识,学习了新的关于集合类的知识,总体来说一点点跟上大家的进度。之前对Eclipse软件的使用不熟悉,好多程序性的错误来源于初始创建不准确。在群文件中按照步骤学习操作,基本掌握了使用方法。本周的测试程序基本能够自主完成,但是对于程序的理解程度还不够,只能照本宣科敲代码,希望后续能多花时间在敲代码上,提升写代码的思路和速度!

201271050130-滕江南-《面向对象程序设计(java)》第十二周学习总结的更多相关文章

  1. 20155322 2016-2017-2 《Java面向对象程序设计》第十二周课堂练习之Arrays和String单元测试

    20155322 2016-2017-2 <Java面向对象程序设计>第十二周课堂练习之Arrays和String单元测试 练习目地 在IDEA中以TDD的方式对String类和Array ...

  2. 201521123061 《Java程序设计》第十二周学习总结

    201521123061 <Java程序设计>第十二周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对 ...

  3. 201521123072《java程序设计》第十二周学习总结

    201521123072<java程序设计>第十二周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象 ...

  4. 201521123038 《Java程序设计》 第十二周学习总结

    201521123038 <Java程序设计> 第十二周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student ...

  5. 201571030332 扎西平措 《面向对象程序设计Java》第八周学习总结

    <面向对象程序设计Java>第八周学习总结   项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https: ...

  6. 201521123122 《java程序设计》第十二周学习总结

    ## 201521123122 <java程序设计>第十二周实验总结 ## 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将St ...

  7. 201771010118马昕璐《面向对象程序设计java》第八周学习总结

    第一部分:理论知识学习部分 1.接口 在Java程序设计语言中,接口不是类,而是对类的一组需求描述,由常量和一组抽象方法组成.Java为了克服单继承的缺点,Java使用了接口,一个类可以实现一个或多个 ...

  8. 201771010134杨其菊《面向对象程序设计java》第八周学习总结

    第八周学习总结 第一部分:理论知识 一.接口.lambda和内部类:  Comparator与comparable接口: 1.comparable接口的方法是compareTo,只有一个参数:comp ...

  9. 201771010134杨其菊《面向对象程序设计java》第七周学习总结

    第七周学习总结 第一部分:理论知识 1.继承是面向对象程序设计(Object Oriented Programming-OOP)中软件重用的关键技术.继承机制使用已经定义的类作为基础建立新的类定义,新 ...

  10. 201521123005 《Java程序设计》 第十二周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

随机推荐

  1. 程序运行时间测试 - 使用libc 中 time 函数 实现秒级的运行时间检测

    c 标准库中,有time 函数,可以返回 1970年1月1日 开始到现在的秒数,我们可以调用两次的时间差来计算程序运行时间: https://github.com/yaowenxu/Workplace ...

  2. [Linux] 获取出日志中的邮箱shell

    需求是把所有的日志中邮箱获取出来,根据指定关键字过滤,邮箱的格式是\txxx@xxx\t的格式,日志的存放是按照日期作为目录 #!/bin/bash logBasePath="/data1/ ...

  3. fork函数的一些小结

    今天遇到一个这样的问题,假设父进程有一个变量S,fork后,子进程中的变量S地址是否和父进程中的变量S 是相同的? 再学操作系统的时候,知道fork是采用的写时复制,所以如果子进程或者父进程不对变量S ...

  4. vue模板语法上

    vue的插值案例 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  5. centos7删除MariaDB怎么操作

    有时我们要在centos上安装一些组件,需要先把原来的数据库删除,比如MariaDB,不然就出现冲突错误,那么如何删除数据库呢?首先查询所安装的MariaDB组件: [root@localhost l ...

  6. Vue入门(二)

    1.vue3.0安装 cnpm install -g @vue/cli 或者 yarn global add @vue/cli //创建项目 vue create hello-world //运行 n ...

  7. JavaScriptES6中Map与对象、数组,JSON之间的相互转换

    JavaScriptES6中Map与对象.数组,JSON之间的相互转换 https://blog.csdn.net/c__dreamer/article/details/82183130

  8. nodejs+Express中使用mustache模板引擎

    由于公司一个seo项目,需要我协助.此项目他人已经开发大半,由于seo需要,使用了服务器端模板引擎.我项目的后端同事说项目是go语音写的,跑项目麻烦,只给了我template和css等静态文件. 为了 ...

  9. Linux运维基础篇大全

    基础知识的文章都在这里https://www.jianshu.com/u/a3c215af055a ,想要了解,请访问这个地址!!!!

  10. IDEA创建maven项目慢的不行

    方法二 下载archetype-catalog.xml文件,在maven的VM Options加上-DarchetypeCatalog=local 默认情况下,创建maven项目是从网络下载catal ...