Java笔记

来源:互联网 发布:数据挖掘目的 编辑:程序博客网 时间:2024/06/06 08:43

一.object类:所有类的超类

1.object.equals(); 比较两个对象的引用是否相等

2.getClass()返回对象的类

3.hashCode()方法:散列码,对象导出的一个整型值。

String s="ok"; String t="ok"; s的散列码跟t相等 。字符串散列码是由内容导出的

Stringbuilder sb=new String(s);    StringBuilder tb=new String(t);字符串缓冲sb散列码不等于tb

4.toString()方法:返回表示对象的字符串

   Point a=new Point(); System.out.print(" "+a);

字符串+a会自动调用toString方法或者是System.out.print(a);也会直接调用a.toString.

二.泛型数组列表:动态解决运行时动态更改数组的问题

ArrayList<类名> 对象名=new ArrayList<>();菱形语法

1.add方法将元素添加到数组列表:staff对象 staff.add(new Employee(参数1,参数2.....))  或者使用索引参数 staff.add(n,e)在指定位置插

remove方法 类似于add方法删除作用

2.staff.endureCapacity(100)=ArrayList<Employee> staff=new ArrayList<>(100);确定数组列表的初始容量 注意:列表容量跟数组大小不是一个概念

3.staff.size:返回列表中元素个数等价于.length方法

4.最后调用staff.trimToSize方法:确定列表大小回收不用空间

5.访问列表元素get(),set()方法:add跟set不同

6.toArrayf方法:拷贝数组元素到另一个数组a中 staff.toArray(a);

三、枚举类

变量的值在一个集合内,自定义一个枚举类型,该变量只能取这个类型声明中的某个枚举值。

例子:enum Size{SMALL,MEDIUM,LARGE,EXTRA_SIZE }; Size s=Size.MEDIUM;

四,接口:类的模板,描述类的功能。

注意:在具体实现接口时,必须把方法声明为public。

不能用new实例化一个接口类。要这样使用:class TimePrint  implments  ActionListener{}; ActionListener listener=new TimePrint();

回调:指出当某个情况出现时的执行动作。

例声明一个定时器:package 接口与回调;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;

import javax.swing.JOptionPane;
import javax.swing.Timer;


class TimePrint implements ActionListener{//响应

 @Override
 public void actionPerformed(ActionEvent listener) {
  // TODO 自动生成的方法存根
  Date now=new Date();
  System.out.println("the time is:"+now);
  Toolkit.getDefaultToolkit().beep();
 }
 
}

public class TimerTest {

 public static void main(String[] args) {
  // TODO 自动生成的方法存根
   ActionListener listener=new TimePrint();
   Timer t=new Timer(10000,listener);
   t.start();
   JOptionPane.showMessageDialog(null, "quit program?");
   System.exit(0);
 }

}

四.GUI编程

JFrame:主框架类

将组件添加到框架中,需要定义一个JComponent类的扩展类并覆盖其中的paintComponent()方法。再调用add.(组件对象)方法添加到面板中。

例:class DrawComponent extends JComponent{

                 public void paintComponent(Graphics g) {

                code for darwing }

                        }
当窗口需要重新绘图时,会引发执行所有组件的paintComponent(Graphics g)方法。但是不能人为的调用此方法。

java2D图形类库:一般内部计算选择double精度计算,

从java se 2版本过后,paintComponent(Graphics g)会自动获得一个 Graphics2D对象,只需要进行一次类型转换。

               public void paintComponent(Graphics g){

                  Graphics2D g2=(Graphics2D) g;

code for darwing

}

//

package draw;

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

/*
 *version 2016.04.20
 *author by qyp
 */
public class DrawTest {

 public static void main(String[] args) {
  // TODO 自动生成的方法存根
  JFrame frame=new DrawFrame();
  frame.setTitle("DrawTest");
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setVisible(true);
 }

}
class DrawFrame extends JFrame{
 public DrawFrame(){
  add(new DrawComponent());
  pack();
 }
}
class DrawComponent extends JComponent{
 private static final int WIDTH=400;
 private static final int HEIGHT=400;
 public void paintComponent(Graphics g){
  Graphics2D g2=(Graphics2D) g;
//绘画一个矩形  
  double leftX=100;
  double topY=100;
  double width=200;
  double height=150;
  Rectangle2D rect =new Rectangle2D.Double(leftX,topY,width,height);
  g2.draw(rect);
//绘画一个内接于该矩形的圆
  Ellipse2D ellipse=new Ellipse2D.Double();
  ellipse.setFrame(rect);
  g2.draw(ellipse);
//绘画一条直线
  Line2D line=new Line2D.Double(leftX,topY,leftX+width,topY+height);
  g2.draw(line);
//以矩形的中心为圆心绘画一个圆
  double centerX=rect.getCenterX();
  double centerY=rect.getCenterY();
  double radious=150;
  Ellipse2D circle=new Ellipse2D.Double();
  circle.setFrameFromCenter(centerX, centerY,centerX+radious,centerY+radious);
  g2.draw(circle);
 }
}

 

 

 

 

 

 

 

 

 

 

 

                                             
0 0
原创粉丝点击