Java学习笔记九
来源:互联网 发布:软件项目风险控制 编辑:程序博客网 时间:2024/05/19 00:35
45.
第一个会叫的程序虽然不知道为什么,以后看看
package com.jianjian5;
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;
public class TimerTest
{
public static void main(String[] args)
{
ActionListener listener = new TimePrinter();
Timer t = new Timer(1000,listener);
t.start();
JOptionPane.showMessageDialog(null,"Quit program");
System.exit(0);
}
}
class TimePrinterimplements ActionListener
{
public void actionPerformed(ActionEvent event)
{
Date now = new Date();
System.out.println("At the tone , the time is "+ now);
Toolkit.getDefaultToolkit().beep();
}
}
46.
作为接口的代表 interface Comparable 接口:
Arrays类中的sort方法承诺可以对对象数组进行排序,但要求对象所属的类必须实现了Comparable接口
47.
if 语句中的陷阱:
public int compareTo(People other)
{
if(salary < other.salary)
return -1;
if(salary > other.salary)
return 1;
if(salary == other.salary)
return 0;
}
编译器会提示错误,原因是什么呢,我比较两个数据的大小,情况也就是这三种啊,但是我们知道,编译器却不知道,它认为,当全部符合三个数据的时候,我该返回什么?
所以最后一句最好写成
return 0 ;
而不要加if 语句;
48.
看下面的程序
目的是通过比较三个人的薪水来排列打印出它们的薪水
其中有几行代码是比较重要的;
package com.jianjian5;
//import java.util.ArrayList;
import java.util.Arrays;
public class SortTest
{
public static void main(String[] args)
{
// ArrayList <People> list = new ArrayList<People>();
People[] staff = new People[3];
staff[0] = new People(3456);
staff[1] = new People(2343);
staff[2] = new People(2324);
Arrays.sort(staff);//就是按照自己的方式去比较;
for(int i = 0; i < staff.length; i++)
{
System.out.println(staff[i].getSalary());
}
}
}
class People implements Comparable<People>
{
private int salary;
public int getSalary()
{
return salary;
}
public void setSalary(int salary)
{
this.salary = salary;
}
public People (int salary)
{
this.salary = salary;
}
public int compareTo(People other)
{
if(salary < other.salary)
return -1;
if(salary > other.salary)
return 1;
return 0;
}
}
49.
子类是不能继承父类的私有域的;只能继承其中的方法。
50.
增强的for each 循环!
package com.jianjian5;
import java.util.Arrays;
public class ForTest6
{
public static void main(String[] args)
{
int [] i = {3,1,6,7,24};
Arrays.sort(i);
for(int e : i)
{
System.out.println(e);
}
}
1.
八种原生数据类型不能添加到泛型,即使有了自动拆装箱,也是要使用它们的包装类型作为泛型的说明。
2.
5.0新特性可以很大程度的提高程序的编写效率,从工作平台传入数据字符串类型,统计每个字符串出现的次数,还是利用Map;来做
package com.jianjian;
import java.util.HashMap;
public class FrequencyTest
{
public static void main(String[] args)
{
HashMap<String, Integer> map = new HashMap<String,Integer> ();//泛型
for(String s : args)//增强的for循环
{
map.put(s,(null == map.get(s))? 1: map.get(s) + 1);
}
System.out.println(map);
}
}
看起来是很简单的,但是要真正的理解才可以。
3.
枚举应用,个人认为枚举是为我们提供了可选的基础常量,是我们经常会用到的,突出的是可选的,枚举与switch语句结合的效果很好
随着计算机的不断普及,程序不仅只用于数值计算,还更广泛地用于处理非数值的数据。例如:性别、月份、星期几、颜色、单位名、学历、职业等,都不是数值数据。在其它程序设计语言中,一般用一个数值来代表某一状态,这种处理方法不直观,易读性差。如果能在程序中用自然语言中有相应含义的单词来代表某一状态,则程序就很容易阅读和理解。也就是说,事先考虑到某一变量可能取的值,尽量用自然语言中含义清楚的单词来表示它的每一个值,这种方法称为枚举方法,用这种方法定义的类型称枚举类型
package com.jianjian5;
public enum ActionTest
{
GO, RUN,JUMP;
}
package com.jianjian5;
public class Action
{
public void method(ActionTest test)
{
switch (test)
{
case GO :
System.out.println("go");
break;
case RUN :
System.out.println("run");
break;
case JUMP :
System.out.println("jump");
break;
}
}
public static void main(String[] args)
{
ActionTest test = ActionTest.GO;
Action action = new Action();
action.method(test);
}
}
4.
每个枚举类型都有一个values(),其作用是返回自身的数组,这样就可以用增强的for循环进行遍历:
for(Color color :Color.values())
{
System.out.println(color);
}
总之就是values()方法返回一个数组!!!
5.
对于switch语句只能接受五种类型的数据,其中的四种是 int ,char ,bity, sort,最后一种是 枚举类型;
6.
同一类中的主方法,是可以调用向同类下的静态方法的!记住。必须是静态的
package com.jianjian7;
public class ThinkTest
{
public static void method()
{
System.out.println("helloworld");
}
public static void main(String[] args)
{
method();
}
}
7.
枚举与类的最大区别就是,枚举在编译时就已经定义好的了实例,固定的实例,将枚举中的成员都看作是枚举的一个实例,枚举和类一样,也是有构造方法的,在成员后面加上小括号其实就是在生成构造方法,
package com.jianjian7;
public enum EnumTest
{
one("卡内奇"),two("西多"),three("洛基");
private Stringname;
EnumTest(String name)
{
this.name = name;//this关键字只存在非静态方法中,表示调用当前对象的形参,在静态方法中不会使用this关键字,因为不需要形参!
}
public String getName()
{
return name;
}
public static void main(String[] args)
{
EnumTest test = EnumTest.one;//用类名来获取对象显然的一说枚举成员都是public static final 的!
System.out.println(test.name);
}
}
枚举类型的valuesOf(String obj)接受一个String类型的对象转换成枚举类型
而且的一说,这个方法是静态的方法,所以使用的时候最好用类名来调用,而且的而且,传入的字符串必须是枚举成员变量中的一个,这个方法的意义不大,听张龙老师说好像是为了后面的方法利用,还有比较成员变量位置;
package com.jianjian7;
public enum Direction
{
UP,DOWN,LEFT,RIGHT;
public static void main(String[] args)
{
System.out.println(Direction.valueOf("DOWN"));
}
}
8.
静态导入,个人觉得意义不大,在静态方法,静态成员变量的基础上省略掉类的名字,要求导入包的时候要精确到域或者方法
9.
要开始反射(reflection)的学习,听说难度非同一般,嗯,总之做好心理准备,坚持下去,做好笔记:
10.
Java中无论一个类生成了多少个对象,这些类都对应一个相同的class类。
- Java学习笔记九
- java学习笔记(九)----多线程
- java学习笔记(九)
- java-J2SE学习笔记(九)
- Java学习笔记(九)
- Java学习笔记(九)
- Java SE 学习笔记(九)
- Java学习笔记(九)
- [Java]学习笔记,随笔【九】
- Java学习笔记(九) Bitset
- java学习笔记(九)
- Java学习笔记(九)
- Effective Java学习笔记(九)
- Java开发学习笔记之九:过滤器
- Java Web学习笔记(九)spring
- java学习笔记<九>抽象类
- java学习笔记九——接口
- Java学习笔记(九):Map.keyset()
- Java学习笔记八
- 在游戏界,就有了些游戏界的理解。不过本文是对某游戏开发商的信
- [38]Count and Say
- 搭建WAMP
- 解决 multiple definition of***
- Java学习笔记九
- Android中Activity共享变量的另一方法:Application context
- ClassLoader介绍
- 修改win7和debian双系统的开机启动顺序
- jQueryEasyUI Messager基本使用
- fedora14修改root登录方式
- Java学习笔记十
- 学习吧~~~
- Linux内核模块编程