*1 工具常用的快捷键

1) Eclipse和MyEclipse,IBM,2001,Java编写,开源,跨平台跨语言
  2)Alt+/快速内容提示
  3)Ctrl+1快速修补错误
  4)Syso+Alt+/快速显示System.out.println()语句
  5)Ctrl+Shift+F快速排版正确代码
  6)Ctrl+Shift+X转大写,Ctrl+Shift+Y转小写
  7)Ctrl+Shift+O一次性导入多个包
  8)Ctrl+/加或减单行注释
  9) Ctrl+Shift+/加多行注释,Ctrl+Shift+\取消多行注释
10) 选中行+Alt+上下光标键移动行

*2 使用断点调试程序,使用Junit测试程序

1)通过断点方式调式程序的每个步骤 
  2)Step over查看代码粗粒度执行过程
  3)Step into查看代码细粒度执行过程
  4)@Before和@After会在@Test方法执行前后各执行一次
  5)@BeforeClass和@AfterClass是在类前后各执行一次

//Junit单独/同时测试多个方法
public class Demo1 {
@Test
public void test1(){
System.out.println("Junit使用");
}
@Test
public void test2(){
System.out.println("Junit调式");
}
}
//Junit测试在方法前后执行
public class Demo2 {
@Before
public void setUp() throws Exception {
System.out.println("文件打开");
}
@Test
public void test1(){
System.out.println("test1()");
}
@Test
public void test2(){
System.out.println("test2()");
}
@After
public void tearDown() throws Exception {
System.out.println("文件关闭");
}
}
//Junit测试在类加载前后执行
public class Demo3 {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
System.out.println("setUpBeforeClass()");
}
@Test
public void test1(){
System.out.println("test1()");
}
@Test
public void test2(){
System.out.println("test2()");
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
System.out.println("tearDownAfterClass()");
}
}
*3 静态导入和自动装拆箱

1)静态导入可以导入对象,属性,方法,*

2)语法:

import static java.lang.Math.PI;

import static java.lang.Math.pow;

import static java.lang.System.out;

3)在JDK5中,编译器自动将基本类型和对应的包装类型,自动转换 
    例如:int<->Integer

//List集合加入int型和取出Integer类型数据
public class Demo1 { @Test
public void test1(){
List<String> list = new ArrayList<String>();
list.add("jack");
String name = list.get(0);
System.out.println("name="+name);
} @Test
public void test2(){
int i = 100;
List list = new ArrayList();
list.add(i);
Integer num = (Integer) list.get(0);
System.out.println("num="+num);
}
}
*4 增强for循环

1)循环迭代数组/List/Set/Map集合
  2)对Map集合的二种迭代方式:

a)keySet()

b)entrySet()

3)在迭代集合时,一定要动态通知Iterator,而不要动态通知List集合,应选用ListIterator。

public class Demo1 {
@Test
public void test1(){
int[] is = {1,2,3,4,5};
for(int i=0;i<is.length;i++){
System.out.println(is[i]);
}
}
@Test
public void test2(){
int[] is = {1,2,3,4,5};
for(int value : is){
System.out.print(value+"\t");
}
}
@Test
public void testSet(){
Set<Integer> set = new HashSet<Integer>();
set.add(100);
set.add(200);
set.add(300);
Iterator<Integer> it = set.iterator();
while(it.hasNext()){
Integer key = it.next();
System.out.print(key+"\t");
}
}
@Test
public void testList(){
List<String> list = new ArrayList<String>();
list.add("jack");
list.add("marry");
list.add("sisi");
for(String name : list){
System.out.print(name+"\t");
}
}
@Test
public void testMap1(){
Map<Integer,String> map = new HashMap<Integer,String>();
map.put(100,"jack");
map.put(200,"marry");
map.put(300,"sisi");
Set<Integer> set = map.keySet();
Iterator<Integer> it = set.iterator();
while(it.hasNext()){
Integer key = it.next();
String value = map.get(key);
System.out.println(key+"-"+value);
}
}
@Test
public void testMap2(){
Map<Integer,String> map = new HashMap<Integer,String>();
map.put(100,"jack");
map.put(200,"marry");
map.put(300,"sisi");
Set<Entry<Integer,String>> set = map.entrySet();
Iterator<Entry<Integer,String>> it = set.iterator();
while(it.hasNext()){
Entry<Integer,String> entry = it.next();
Integer key = entry.getKey();
String value = entry.getValue();
System.out.println(key+"<->"+value);
}
}
//向List集合并发存取元素引起的问题
public class Demo2 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("jack");
list.add("marry");
list.add("sisi");
System.out.println("list前长度"+list.size());
//Iterator<String> it = list.iterator();
ListIterator<String> it = list.listIterator();
while(it.hasNext()){
String key = it.next();
System.out.print(key+"\t");
//list.add("qq");
//动态通知迭代器,加入了新元素,从而迭代器自动通知List集合
it.add("qq");
}
System.out.println("\nlist后长度"+list.size());
it = list.listIterator();
while(it.hasNext()){
String key = it.next();
System.out.print(key+"\t");
}
}
}
*5 可变参数

1)参数的个数不确定的

2)可变参数只能放置在参数的最后,即最右边

3)可变参数最少0个,最多1个

4)编译器将可变参数当作一个一维数组来对待

//可变参数
public class Demo1 {
public static void main(String[] args) {
//show1(new String[]{"jack","marry","sisi","soso"});
//show2("jack","marry","sisi","soso","berry");
show3("qq","jack","marry","sisi","soso","berry"); }
public static void show1(String[] arr) {
for(String a :arr){
System.out.print(a+"\t");
}
}
public static void show2(String... arr) {
for(String a :arr){
System.out.print(a+"\t");
}
}
public static void show3(String qq,String... arr) {
System.out.println("第一个参数是:" + qq);
for(String a :arr){
System.out.print(a+"\t");
}
}
/*
public static void show4(String... arr1,String... arr2) {
}
*/
}
*6 枚举

1)当取值是某范围中的之一,这时可以使用枚举

2)当向用户提示严重的错误时,尽可以使用抛异常的方式通知客户端

3)可以对枚举在运行时验证

4)可以对枚举在编译时验证

5)枚举值相当于实例变量

6)枚举类与普通一致,可以继承或实现,如果有抽像方法的话,可以利用每个枚举值以匿名内部类的方式去实现

7)枚举值可以用在switch()语句中

8)枚举类常用方法如下:

a)name():显示枚举值

b)ordinal():显示枚举值对应的索引,从0开始

c)values():取得该枚举类对应的所有枚举值,是一个数组

d)valueOf():判段某个字符串是否属性枚举值之一

//自定义算法解决学员分数等级ABCDE(运行验证)
public class Demo1 {
public static void main(String[] args) throws Exception {
Student student = new Student();
student.setName("jack");
student.setGrade("E");
System.out.println("姓名:" + student.getName());
System.out.println("等级:" + student.getGrade());
}
} //学生
public class Student {
//姓名
private String name; //等级
private String grade;//等级是能是{A,B,C,D,E取值之一} public Student(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) throws Exception {
//判段
if(grade!=null && grade.matches("A|B|C|D|E")){
this.grade = grade;
}else{
throw new Exception();
}
}
}
//使用模拟枚举类表示学员分数等级ABCDE(编译验证)
public class Demo1 {
public static void main(String[] args) throws Exception {
Student student = new Student();
student.setName("jack");
student.setGrade(Grade.B);
System.out.println("姓名:" + student.getName());
System.out.println("等级:" + student.getGrade().getTip());
System.out.println("分数区间:" + student.getGrade().getDesc());
}
}
//分数类
public class Grade {
public static Grade A = new Grade("A","90-100");
public static Grade B = new Grade("B","80-89");
public static Grade C = new Grade("C","70-79");
public static Grade D = new Grade("D","60-69");
public static Grade E = new Grade("E","<60");
private String tip;
private String desc;
private Grade(String tip,String desc){
this.tip = tip;
this.desc = desc;
}
public String getTip() {
return tip;
}
public String getDesc() {
return desc;
}
} //学生
public class Student { //姓名
private String name; //分数类
private Grade grade; public Student(){} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Grade getGrade() {
return grade;
} public void setGrade(Grade grade) {
this.grade = grade;
} }
//使用枚举类
public class Demo1 {
public static void main(String[] args) throws Exception {
Student student = new Student();
student.setName("marry");
student.setGrade(Grade.B);
System.out.println("姓名:" + student.getName());
System.out.println("等级:" + student.getGrade().getTip());
System.out.println("分数区间:" + student.getGrade().getDesc()); }
}
//分数枚举类
public enum Grade {
A("A","90-100"),
B("B","80-89"),
C("C","70-79"),
D("D","60-69"),
E("E","<60");
private String tip;
private String desc;
private Grade(String tip,String desc){
this.tip = tip;
this.desc = desc;
}
public String getTip() {
return tip;
}
public String getDesc() {
return desc;
}
} //学生
public class Student { //姓名
private String name; //分数类
private Grade grade; public Student(){} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Grade getGrade() {
return grade;
} public void setGrade(Grade grade) {
this.grade = grade;
} }
//带抽象方法的枚举
public class Demo1 {
public static void main(String[] args) {
Season season = Season.SPRING;
//System.out.println(season.name());
//System.out.println(season.ordinal());
//Season[] seasons = season.values();
//for(Season s : seasons){
// System.out.println(s.name());
//} Season.valueOf(Season.class,"SPRING"); /*season.show();
String msg = null;
switch(season){
case SPRING:
msg = "1";break;
case SUMMER:
msg = "2";break;
case AUTOMN:
msg = "3";break;
case WINNTER:
msg = "4";break;
}
System.out.println(msg);*/
}
} //季节枚举类
public enum Season{
SPRING{
public void show(){
System.out.println("春天");
}
},SUMMER{
public void show(){
System.out.println("夏天");
}
},AUTOMN{
public void show(){
System.out.println("秋天");
}
},WINNTER{
public void show(){
System.out.println("冬天");
}
};
//抽像方法
public abstract void show();
}
package cn.itcast.java.model;
//单例/态/值设计模式[单线程情况下]
public class Singleton {
// NO1
private Singleton() {
}
// NO2
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
// NO3
private static Singleton instance;
}
package cn.itcast.java.model; public class Demo1 {
public static void main(String[] args) {
for(int i=0;i<10;i++){
Singleton s = Singleton.getInstance();
System.out.println(s.hashCode());
}
}
}

*7 反射

1)解析一个类的各个部分,形成一个对象。
  2)外存中的类,加载到内存中,会形成该对象的Class类,例如:String类,加载到内存中,就是StringClass对象。

3)使用不同的方式,取得同一个类型的字节码对象Class是相同的。

4)通过getXxxxx()只能取得该类public的类型

通过getDeclaredXxxxxx()可以取得该类非public的类型

设置非public类型的可访问性,默认为false,不可访问

c.setAccessible(true);

5)反射可以反射private/public的构造方法,字段,普通方法

6)在反射main方法时,编译器会将数组自动拆分,取第一个值

解决方案:

//m.invoke(null,(Object)new String[]{"A","B","C","D"});,将数组当作对象,此时编译器不进行拆分

m.invoke(null,new Object[]{new String[]{"A1","B1","C1","D1"}});在数组中嵌入另一个数组

//Class对象的比较使用==号或!=号
public class Demo1 {
public static void main(String[] args) throws Exception { //类名.class
Class c1 = String.class; //对象.getClass()
Class c2 = new String().getClass(); //Class.forName()
Class c3 = Class.forName("java.lang.String"); if(c2==c3){
System.out.println("c2==c3");
}else{
System.out.println("c2!=c3");
}
}
}
//含有构造方法,字段,成员方法,main方法的类
public class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/*
public Person(){
System.out.println("public Person()");
}
public Person(String name,int age){
System.out.println("public Person(String name,int age)");
}
private Person(){
System.out.println("private Person()");
}
protected Person(){
System.out.println("protected Person()");
}
*/
public void show(){
System.out.println("public void show()");
}
public void show(String[] likes,double salary){
System.out.println("public void show(String[] likes,double salary)");
}
private void haha(){
System.out.println("private void haha()");
}
private void xixi(){
System.out.println("private void xixi()");
}
private String goodbye(){
System.out.println("private String goodbye()");
return "thanks";
}
public static void main(String[] args) {
System.out.println("public static void main(String[] args)");
}
}
//通过反射解析构造方法
public class Demo2 {
public static void main(String[] args) throws Exception { //取得Person类对应的字节码对象Class
Class clazz = Class.forName("cn.itcast.java.reflect.Person"); //取得该类的唯一构造方法
//Constructor c = clazz.getConstructor(null);
//Constructor c = clazz.getConstructor(String.class,int.class);
Constructor c = clazz.getDeclaredConstructor(null); //创建实例
//Person p = (Person) c.newInstance(null);
//Person p = (Person) c.newInstance("berry",10); //设置非public成员的访问性,默认false即不可访问性
c.setAccessible(true); Person p = (Person) c.newInstance(null); //执行方法
p.show(); }
}
//通过反射解析字段
public class Demo3 {
public static void main(String[] args) throws Exception {
Person p = new Person();
Class c = Class.forName("cn.itcast.java.reflect.Person");
Field f = c.getDeclaredField("name");
f.setAccessible(true);
f.set(p,"杰克");//p.setName("杰克")
System.out.println("用户名:" + p.getName());
}
}
//通过反射解析成员方法
public class Demo4 {
public static void main(String[] args) throws Exception {
Class c = Class.forName("cn.itcast.java.reflect.Person");
Constructor con = c.getConstructor(null);
Person p = (Person) con.newInstance(null);
Method m = c.getDeclaredMethod("goodbye",null);
m.setAccessible(true);
String returnValue = (String) m.invoke(p,null);
System.out.println(returnValue); //Method m = c.getMethod("show",String[].class,double.class);
//m.invoke(p,new String[]{"sing","dance"},5000);//new Person().show()
}
}
//通过反射解析main方法
public class Demo5 {
public static void main(String[] args) throws Exception {
Class c = Class.forName("cn.itcast.java.reflect.Person");
//获取main方法
Method m = c.getMethod("main",String[].class);
//m.invoke(null,(Object)new String[]{"A","B","C","D"});
m.invoke(null,new Object[]{new String[]{"A1","B1","C1","D1"}}); }
}
public class ReflectDemo {

    public static void main(String[] args) throws IOException,
ClassNotFoundException, InstantiationException,
IllegalAccessException {
@SuppressWarnings("resource")
BufferedReader reader = new BufferedReader(new FileReader("config.txt"));
String line = reader.readLine();
Class clazz = Class.forName(line);
//Class clazz = Class.forName("com.Jordon.Reflect.MyinterImplement");
Myinter myinter = (Myinter) clazz.newInstance();
myinter.show();
}
}

这部分代码反映了reflect的可扩展性,通过读取配置文件就能方便的更改所读取的类文件。

package cn.itcast.java.reflect;

import java.io.FileInputStream;
import java.io.InputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Properties; public class Demo6 {
public static void main(String[] args) throws Exception { //加载属性文件,取得类名的方法名
Properties props = new Properties();
InputStream is = new FileInputStream("src/cn/itcast/java/reflect/class.properties");
props.load(is);
String className = props.getProperty("className").trim();
String methodName = props.getProperty("methodName").trim(); //通过反射,执行该类的方法
Class c = Class.forName(className);
Constructor con = c.getConstructor(null);
Method m = c.getDeclaredMethod(methodName,null);
m.setAccessible(true);
m.invoke(con.newInstance(null),null); }
}
//-------------------------------------------------------------------
className=cn.itcast.java.reflect.Person
methodName=xixi

javeWeb常用快捷键 Junit for changeableargs enumn reflect的更多相关文章

  1. IntelliJ IDEA 工具常用快捷键

    IntelliJ IDEA是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE支持.各类版本工具(git.svn.g ...

  2. 十八、IntelliJ IDEA 常用快捷键 之 Windows 版

    IntelliJ IDEA(简称 IDEA),是 Java 语言开发的集成环境,IDEA 在业界被公认为最好的 Java 开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE 支持.各类版本 ...

  3. Visaul Studio 常用快捷键的动画演示

    从本篇文章开始,我将会陆续介绍提高 VS 开发效率的文章,欢迎大家补充~ 在进行代码开发的时候,我们往往会频繁的使用键盘.鼠标进行协作,但是切换使用两种工具会影响到我们的开发速度,如果所有的操作都可以 ...

  4. Android Stuido 常用快捷键

    Android Stuido 常用快捷键 Ctrl + Z : 撤消 Ctrl + G : 定位行 Ctrl + / : 单行注释 Ctrl + Shift + Z : 恢复 Ctrl + J : 快 ...

  5. ADT - Eclipse 常用快捷键

    ADT - Eclipse 常用快捷键 Alt + / : 自动补全 F3 : 打开类的源码 Ctrl + D : 删除选中行 Ctrl + 1 : 自动弹出修改建议 Ctrl + Shift + J ...

  6. iOS开发常用快捷键

    二. Xcode基本快捷键 新建项目 Shift + CMD + N 项目中新建文件 CMD + N 运行 CMD + R 编译 CMD + B 停止运行 CMD + . 清除缓存 Shift + C ...

  7. windows常用快捷键

    windows常用快捷键 Fn+F1:Windows的支持和帮助 =Windows 徽标+F1 Fn+F2:重命名对象 Fn+F3:查找所有文件 Fn+F4:选择“转到不同的文件夹”框并沿框中的项向下 ...

  8. Eclipse最常用快捷键

    常用快捷键: Ctrl + 1 :快速修复(当编辑器出现红色波浪线时使用此快捷键能快速弹出提示) Ctrl + d :删除当前光标所在的行 Ctrl + z :撤销上一步的操作 Ctrl + y :重 ...

  9. MyEclipse 常用快捷键

    MyEclipse 常用快捷键 编辑: Ctrl+1 快速修复(最经典的快捷键,就不用多说了,可以解决很多问题,比如import类.try catch包围等) Ctrl+Shift+F 格式化当前代码 ...

随机推荐

  1. QT设置窗口屏幕居中

    int main(int argc, char *argv[]){  QApplication ap(argc, argv);  QDesktopWidget *pDesk = QApplicatio ...

  2. php错误消息捕获

    <?php header('Content-type:text/html;charset=UTF-8'); //function_exists('ini_set') && ini ...

  3. Linux定时任务crontab每三秒执行一次shell

    第一种方法:当然首先想到的是写一个触发的脚本,在触发脚本中使用死循环来解决此问题,如下: cat kick.sh #!/bin/bash while : ;do /home/somedir/scrip ...

  4. gson小练习之嵌套复杂数据解析

    package com.zf.demo; import java.util.List; import com.google.gson.Gson; public class JGson { /** * ...

  5. 2W/月和1W/月的工作,你会怎么选?

    只看标题的话,肯定有不少人会选择月薪 2W 的工作,很明显,钱多嘛!但实际上,这里是有前提的,完整的问题如下: 一份月薪 2W,但加班无底线,基本没有自由时间的工作,和一份月薪 1W,但正常工作时长, ...

  6. 部门招聘开发人员(python相关)

    岗位职责: 1.参与需求分析,产品设计,功能开发: 2.负责系统平台的日常维护: 3.与团队技术交流,共同进步 任职要求: 1.精通Python:对Python有兴趣. 2.熟悉MVC架构,精通Dja ...

  7. Spark Streaming揭秘 Day6 关于SparkStreaming Job的一些思考

    Spark Streaming揭秘 Day6 关于SparkStreaming Job的一些思考 Job是SparkStreaming的重要基础,今天让我们深入,进行一些思考. Job是什么? 首先, ...

  8. 1056. Mice and Rice (25)

    时间限制 30 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Mice and Rice is the name of a pr ...

  9. 字符串做异或使用union

    #include <stdio.h> #include <sys/time.h> #include <string.h> union data { unsigned ...

  10. Unity3d + UGUI 的多分辨率适配

    原文地址:http://blog.csdn.net/dingkun520wy/article/details/49471789 1.Canvas的属性配置 2.Canvas Scaler的属性配置 3 ...