2007年1月11日

数组,集合

1.10 星期三
  array 数组:数组是一个具有相同类型的数据值得索引集合.

  数组申明:double[] rainfull; 推荐
           或
    double rainfull[];
 
   引用数据类型:接口,对象,数组.

   rainfull = new double[12];
   创建一个长度为12的数组,把空间地址赋给rainfull.

   数组索引是从0开始(没特殊要求情况下,索引一般都是从0开始)
 
   动态数组--自动增长

   数组.length (属性)
   String.leng()  (方法)

   String[] m = {"a","b","c"...}
   在申明初始化时,数组的大小设定.

   int size;
   int[] number;
   size = Integer.parseInt(JOptionPane.showMessageLag(null,"size of .."));  
   number = new int[size];   (方法也不是很好.因为size不一样,对象也就不一样.)
   可变型数组 
   
   对象数组
   数组的类型不是基本数据类型;
   Person[] person;
   person = new Person[20];
   对象数组每个元素都是一个对象,没初始化时是null.

   Person[0] = new Person[]; 创建对象

1.11 星期四
   JCF--java集合框架
   Java Collection Framework
   JCF是什么?
   是java语言设计出来的针对底层算法和数据结构的一系列类.
   在哪用JCF?
   凡是提到数据结构和算法的都可以用JCF
   为什么用JCF?
   让程序员的重点放在业务上,而不是如何去写算法上.
  
   接口                 Collection
                          |    |
                          |    |
                    set----     ----list               map
 
   实现            HashSet          ArrayList          SoredMap
 
   算法            Collections

   以上构成JCF
 
   list 列表     map 映射
   list的重要特征是帮我们管理大量对象

   ArrayList 数组列表
   LinkedList (单双)链表 (不是连续的,通过指针连接)

   ArrayList al = new ArrayList();
   al.add(1);
   al.add(4);
   al.add(2);  增加
   ......

   al.remove;  删除

   System.out.println(al);
   System.out.println(al.get(3));

   排序
   Collections.sort(al); 小到大
   Collections.max(al);
   Collections.min(al);
   Collections.sort(al,Collection.reverseOrder);  大到小
 
   Vector 跟 ArrayList 很相似
   向量

   如何便利集合
   Iterator it = al.iterator(); 迭带器 挨个访问
   while(it.hasNext())
   {
      System.out.println(al.next);
   }

   HashMap 不允许重复
   TreeMap 自动排序
 
   treeMap tr = new TreeMap();
   tr.put(1,1);  (key,value)
   .......

   Object[] o = tr.keySet().ToArray();
   Object[] o = tr.value().ToArray();               
 
   System.out.println(tr);

   for(int i = 0;i<o.leng;i++)
   {
      System.out.println(0[i]);
   }

posted @ 2007-01-11 21:53 扯 阅读(336) | 评论 (1)编辑 收藏

java GUI

12.25!~12.27
GUI
1 容器,部件
2 事件处理

awt和swing的特点:
awt(抽象窗口工具集)是依赖操作系统的GUI.
能够显示出来的组件是不同操作系统的共有组件.(但是不太好看.)
swing(模拟GUI组件)速度比awt要慢的多.
swt(sun公司的,是swing和awt的综合体)如果swt产生的组件awt有就直接调用, 没有就模拟出来.这样既解决了跨平台的问题,也解决了速度慢的问题.


低层容器:容器是包含其他组件的组件.
JFrame,JApplet,JDialog. 

布局管理器:
标准布局,自由布局.

GUI三个步骤:
1.选择容器
2.为容器设置布局方式
3.为容器填加组件

导入3个包
import javax.swing.*;
import java.awt.*;
import awt.event.*;

GUI底层容器的实现方式
第一种:
JFrame jf = new JFrame();  //拿一个容器
jf.setLayout(null);       
JButton jb = new JButton();
jb.setBounds(0,0,20,20);  //绝对布局
jf.add(jb);

this.setSize(200,200);
this.setVisible(true);

第二种:
类 extends JFrame   //让自己的类变成容器
申明组件;
public 类
{
 Container ct = this.getContentPane();
 ct.add();
 this.setSize();
 this.setVisible();
}

this.setCursor(new Cursor(Cursor.HAND_CURSOR));  //变手

Image image = new ImageIcon("Sunset.jpg").getImage();
setIconImage(image);//改变图标


容器,根容器,部件看gui资料  E盘..

布局管理器
FlowLayout 面板(缺省管理器) 流布局管理器
在setLayout(null)下全是FlowLayout
BorderLayout JFrame(缺省布局管理器) 东 西 南 北 中
GridLayout 行列(像表格)
CardLayout 卡片布局管理器(没有页签)
GridBagLayout 格兰包布局管理器(标准管理器中最灵活的,不好把控)  


FlowLayout 从上到下,从左到右放置.
1.当第一行没有排满时,会把第一行排满再排下一行.
2.不管布局管理器是否改变,组件大小都不会改变.
FlowLayout folw = new FlowLayout (FlowLayout.LEFT);
3.在缺省状态下从中部开始.


BorderLayout
当东西南北任何一个地区没放置任何组件时,中部区域会把周围的区域侵略掉.
setLayout(new BorderLayout());
组件会随着容器大小的变化而变化.
add("North",组件); 不好用
add(组件,BorderLayout.NORTH); 清晰

GridLayout
组件会随着容器大小的变化而变化.
setLayout(new GridLayout(3,2));  行列
add(new Button("first",0));
根据序列依次填进去,只有列满了才去填行.
validate();  让容器刷新

GardLayout
GardLayout card = new GardLayout();
setLayout(card);
add("1",new Button(""));


CardLayout cl = (CardLayout)cardLayout.getLayout;
cl.show(cardLayout,"card1");

事件
class 类 extends JFrame implements(实现) ActionListener(接口)
{                      (受托事件处理)
                       不同的事件不同的部门处理
}
1 让类变成监听者
2 赋予多少职责就实现多少
3 建立部件与监听者的关系
jb.addActionListener(this);

 

CardLayout cl = (CardLayout)card.getLayout();
String s = e.getActionCommed();
if(s.equals("上一步"))
{
 cl.show(card,"card2");
        或者
        cl.previous(card);
 button.setEnabled(false);
}
else if(s.equals("下一步"))
{
 cl.show(card,"card1");
        或者
        cl.previous(card);
 button.setEnabled(false);
}

 

 

 

 

 

 

 

 

 

posted @ 2007-01-11 21:11 扯 阅读(300) | 评论 (0)编辑 收藏

java基础

2.19 星期二
  在方法里面申明的属性必须初始化.(局部变量)
  在类里面申明的属性不用初始化.(全局变量)

  如果一个方法有返回值,那么方法里必须加上return.返回类型没有void.

  构造器就是类的构造方法.

  构造方法的基本特点:
  方法名和类名一致,方法名没有返回类型.

  构造方法的特性:
  1.每个类一定会有一个不带参数的默认构造方法.
  2.如果一个类定义了一个带参数的构造方法,那么不带参数的构造方法就会被洗刷掉.
  3.构造方法可以重载.(如一个带参数的和一个带参数的)
  一个类的方法同名叫做方法重载.
  4.构造方法是不能被继承的.

 
  实例变量:在类里面任何一个方法外面的变量.每个对象都有属于自己实例变量的拷贝.

  public private这个我们称之为"可见性修饰符".它来指定数据成员和方法的访问能力和访问级别.

  如果这个方法的行为是改变对象的属性,设置对象属性的值,那么这个方法称之为"修改器".
  public void setHeight(float h, float w)
  {
     height = h;
     weight = w;
  } 

  如果这个方法只是返回对象属性,那么我们称这个方法为"访问器".
  public void abc()
  {
     return a;
  }

12.20 星期三
  static int i;是类变量
  缺省修饰符:本包的都可以访问.
  公共修饰符(public):任何地方都可以访问.

  if()
  语句1;
  else
  语句2;
 
  ?  :       if else的工程用法(三目运算符)
 
  switch的条件语句只能是整数

  equals方法是被重写过的.
 
  equals跟==的区别:
  equals比较的是内存空间的内容是否相同
  == 比较的是两个对象的地址是否相同

12.21 星期四

properties
 
import java.io.*;
import java.util.Properties;

class P
{
 Properties pro;
 
 public P()
 {
  pro = new Properties();
 }
 
 public void load(String fileName)
 {
  try
  {
   pro.load(new FileInputStream(fileName));加载
  }
  catch(IOException e)
  {
   e.printStackTrace();
  }
 }
 
 public void getP(String key)
 {
  System.out.println(pro.getProperty(key));读取
 }
 
 public void setP(String key,String value)
 {
  pro.setProperty(key,value);设置(在内存里)
 }
 
 public void storeP(String fileName,String Info)
 {
  try
  {
   pro.store(new FileOutputStream(fileName),Info);保存(在文件)
  }
  catch(IOException e)
  {
   e.printStackTrace();
  }
 }
 
}


普通文件  后缀.peoperties

(柔性软件开发)目的:可以让程序变的灵活,配置变的轻巧。

循环语句
while循环:循环次数未知使用。
for 循环:已知循环次数使用。
do-while循环

 


 

posted @ 2007-01-11 21:11 扯 阅读(172) | 评论 (0)编辑 收藏

java基础的基础

java基础

static是静态。
静态方法不能访问非静态成员。
非静态方法可以访问静态成员。

int i = 3;
public static void main(String[] args) 

 System.out.println(i);
}
这个就会报错。因为静态方法不能访问非静态成员!!

 static int i = 3;
 public static void main(String[] args)
 {
  nbn n = new nbn();
  n.abc();
 }
 
 public void abc()
 {
  System.out.println(i);
 }

这个就不会报错。因为非静态方法可以访问静态成员。

 

public(訪問修飾符)static(訪問修飾符)void(返回類型) main(方法名)(String[] args)(參數表){}

import javax.swing.*;
import java.text.SimpleDateFormat;
class jframe
{
 public static void main(String[] args)
 {
  JFrame jf = new JFrame();//窗口
  
  SimpleDateFormat sf = new SimpleDateFormat("yyyy-mm-dd");//时间格式
  java.util.Date da = new java.util.Date();//显示时间的对象申明
  
  
  jf.setTitle("w.a.n");//设置标题
  jf.setSize(300,300);//设置窗体大小
  jf.setVisible(true);//显示
  JOptionPane.showMessageDialog(jf(位置),"hello");//弹出窗口显示HELLO
  String a = JOptionPane.showInputDialog(null,"can you see?");//输入窗口,窗口提示为can you see
  

  JOptionPane.showMessageDialog跟JOptionPane.showInputDialog还有一种参数写法。
  JOptionPane.showMessageDialog(null," "(显示信息)," "(标题信息),JOptionPane.INFORMATION_MESSAGE);
  System.out.println(sf.format(da.getTime())); //输出年月日。用SimpleDateFormat
  
 }
}


三种注释
/**
 *文檔註釋,寫在開頭 ( 注明程序的功能,以及相關信息)
 *功能:
 *作者:
 *版本:
 *開發日期:
 **/

/*
  *多行註釋
 
*///單行註釋


import javax.swing.JOptionPane;
class Area
{
 final private static double PI = 3.1415;  //常量的申明:final
 private String r;
 private double rr;
 private double s;
 
 
 public static void main(String[] args)
 {
  Area a = new Area();
  a.Input();
  a.Areas();
 }
 
 public void Input()
 {
  r  = JOptionPane.showInputDialog(null,"請輸入圓半徑");
 }
 
 public void Areas()
 {  
  rr = Double.parseDouble(r);//类型转换 
  s  = rr*rr*PI;
  JOptionPane.showMessageDialog(null,"圓面積是:"+s);
 }
}

类型转换

String转double
xx = Double.parseDouble(要转换的数据名字);
String转int
xx = Integer.parseInt(要转换的数据名字);

int转String
String s = String.valueOf(12);

String s = new Integer(10).toString();

注意!!
float f = 2.33 是错的。因为2.33默认类型是double.
改正:float f = 2.33 F;

还要注意
高内聚,松耦合。
函数分解。
这样代码看起来会很清爽。


import java.text.DecimalFormat;
class Dformat
{
 public static void main(String[] args)
 {
  DecimalFormat df = new DecimalFormat("0");//格式0后面几个小数点表示保留几位小数
  System.out.println(df.format(66.6666)+"%");//这样66.666就是67%
 }
}


标准输出
System.out.print("");//加ln是换行
标准输入
System.out.println(System.in.read());//這個方法用來讀取阿科斯碼
System.out.println((char)System.in.read());//這個方法是強制轉換,只能讀取一個字符

import java.io.*;//用BufferedReader 要引用io包
class c

 public static void main(String[] args)throws Exception //要抛异常
 {
 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 String s = br.readLine();
 System.out.println(s);
 }
}
 要导入util包,util是工具包.
 Scanner sc = new Scanner(System.in);
 int s = sc.nextInt();
 int s1 = sc.nextInt();
 System.out.println(s*s1);//用Scanner可以省去判斷的步驟 在jdk1.5以下的版本不能用

GregorianCalendar calendar = new GregorianCalendar(year,month,day);
int d = calendar.get(Calendar.DAY_OF_WEEK);//今天是一周内的哪一天

 

 

 

 

 

 

 

 

 

 

 

posted @ 2007-01-11 21:10 扯 阅读(249) | 评论 (0)编辑 收藏

<2007年1月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿(1)

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜