文档章节

core-java学习【二】

ruyees
 ruyees
发布于 2014/10/05 11:47
字数 775
阅读 7
收藏 0
点赞 0
评论 0
package com;   
  
import java.util.*;   
  
public class ArrayListTest   
{   
    public static void main(String[] args)    
    {   
        // fill the staff array list with three Employee objects   
        // 声明和构造一个保存Employee对象的数组列表   
        ArrayList<Employee> staff = new ArrayList<Employee> () ;   
           
        Employee temp1 = new Employee("Eric", "Zhang", 80000, 1989, 3, 14) ;   
        Employee temp2 = new Employee("Huiyi", "Chen", 80000, 1989, 3, 14) ;   
           
        staff.add(new Employee("Carl", "Cracker", 75000, 1987, 12, 15)) ;   
        staff.add(new Employee("Harry", "Hacker", 50000, 1989, 10, 1)) ;   
        staff.add(new Employee("Tony", "Tester", 40000, 1990, 3, 15)) ;   
        staff.add(temp2) ;   
           
        //使用add方法将对象添加到列表的指定位置,而不会覆盖原值,原有值会自动往下移动一格   
        staff.add(0 , temp1) ;   
           
        //使用set方法将对象添加到列表的指定位置,会覆盖原值   
        staff.set(4 , temp2) ;   
           
        // 使用remove方法将指定位置的对象从列表中删除,其后的对象将自动往上移一个同时调整列表大小   
        staff.remove(3) ;   
           
        // 方法 size()返回当前列表中元素的个数   
        System.out.println("\nstaff.size()= " + staff.size() + "\n");   
           
        // raise everyone's salary by 5%   
        for(Employee e : staff)   
            e.raiseSalary(5) ;   
        /* 等同于如下for循环  
         * for (int i = 0; i < staff.size(); i++)  
         *  {  
         *        Employee e = (Employee)staff.get(i) ;  
         *        e.raiseSalary(5);  
         *       }  
         */  
                   
        // print out the information about all Employee objects   
        for(Employee e : staff)   
            System.out.println("Name= " + e.getName()   
                    + " , salary= " + e.getSalary()   
                    +" , hireDay= " + e.getHireDay()) ;   
    }   
}

 

 

package com;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.*;

public class ReflectionTest 
{
    public static void main(String[] args) 
    {
        // read class name from command-line args or user input
        // 从命令行获取参数  name
        String name ;
        if (args.length > 0)
            name = args[0] ;
        else
        {
            Scanner in = new Scanner (System.in) ;
            System.out.println("Enter class name (e.g.  java.util.Date  ): ") ;
            name = in.next() ;
        }
        
        //异常捕获
        try
        {
            //print class name and superclass name ( if != Object )
            // 利用静态方法forName 获得字符串对应的Class对象,返回与类名name对应的Class对象
            Class cl = Class.forName(name) ;  
            // 取得上面得到的Class对象的超类 名称
            Class supercl = cl.getSuperclass() ; 
            
            // 输出所要查看的类的名称 信息
            System.out.print("     //输出的 class 类信息是: " + name ) ;
            
            //输出name类的超类(继承关系)
            if ( supercl != null && supercl != Object.class)
                System.out.print( "  extends/*继承*/  " + supercl.getName()) ;
            
            System.out.print("\n  {\n");
            
            // 输出类对象的所有构造器
            System.out.println("     //输出类对象的所有构造器:") ;
            printConstructors(cl) ;
            System.out.println() ;
            
            // 输出类对象的所有方法
            System.out.println("     //输出类对象的所有方法:") ;
            printMethods(cl) ;
            System.out.println() ;
            
            // 输出类对象的所有实例域
            System.out.println("     //输出类对象的所有实例域:") ;
            printFields(cl) ;
            System.out.println("  }") ;
            }
        catch(ClassNotFoundException e)
        {
            // 将Throwable对象和栈的轨迹输出到标准错误流
            e.printStackTrace() ;  
        }
        System.exit(0) ;
    }
    
    /*
         prints all constuctors of a class
            打印类对象的构造器
         @param cl a class
     */
    public static void printConstructors(Class cl)
    {
        // 将返回包含Constructor对象的数组
        Constructor[] constructors = cl.getDeclaredConstructors() ;
        
        for ( Constructor c : constructors)
        {
            String name = c.getName() ;
            
            // 得到对应构造器的修饰符
            System.out.print("    " + Modifier.toString(c.getModifiers())) ;
            // 得到对应构造器的名称
            System.out.print("  " + name +"(" ) ;
            
            //print parameter types 打印构造器的参数类型
            Class[] paramTypes = c.getParameterTypes() ;
            for ( int j = 0 ; j < paramTypes.length ; j++ )
            {
                if ( j > 0 )
                    System.out.print(" ,  ") ;
                System.out.print( paramTypes[j].getName()) ;
            }
            System.out.println("); ") ;
        }        
    }
    
    /*
        Prints all methods of a class 
        @param cl  a class
     */
    public static void printMethods(Class cl)
    {
        // 将返回包含Method对象的数组
        Method[] methods = cl.getDeclaredMethods() ;
        
        for (Method m : methods)
        {
            Class retType = m.getReturnType() ;
            String name = m.getName() ;
            
            // print modifiers, return type and method name
            System.out.print("    " + Modifier.toString(m.getModifiers())) ;
            System.out.print("  " + retType.getName() +"  " + name + "(" ) ;
            
            // print parameter types
            Class[] paramTypes = m.getParameterTypes() ;
            for(int j = 0 ; j < paramTypes.length ; j++ )
            {
                if ( j > 0 )
                    System.out.print(" ,  ") ;
                System.out.print( paramTypes[j].getName()) ;
            }
            System.out.println("); ") ;
        }
    }
    
    /*
        Prints all fields of a class
        @param cl a class
     */
    public static void printFields(Class cl)
    {
        // 将返回包含Field对象的数组
        Field[] fields = cl.getDeclaredFields() ;
        
        for ( Field f : fields)
        {
            Class type = f.getType() ;
            String name = f.getName() ;
            System.out.print("    " + Modifier.toString(f.getModifiers())) ;
            System.out.print("  " + type.getName() +"  " + name + "; \n" ) ;
        }
    }

}

 

本文转载自:http://zuoqiang.iteye.com/blog/715525

共有 人打赏支持
ruyees
粉丝 3
博文 71
码字总数 0
作品 0
深圳
产品经理
从Java小白到架构师必须要看的书籍,真正的“武林秘籍”!

少年,我看你骨骼精奇,将是未来万中无一的IT精英,很是适合学JAVA。维护世界和平就看你的了,我这里有能让你成为IT精英的办法!还不来看看! 基础类 1、《Thinking in Java》,入门第一位是...

启示录是真的
05/25
0
0
sharding-jdbc源码分析—准备工作

原文作者:阿飞Javaer 原文链接:https://www.jianshu.com/p/7831817c1da8 接下来对sharding-jdbc源码的分析基于tag为源码,根据sharding-jdbc Features深入学习sharding-jdbc的几个主要特性...

飞哥-Javaer
05/03
0
0
对JDBC的支持 之 7.1 概述

概述 JDBC回顾 传统应用程序开发中,进行JDBC编程是相当痛苦的,如下所示: //cn.javass.spring.chapter7. TraditionalJdbcTest @Test public void test() throws Exception { Connection co...

heroShane
2014/02/27
0
0
百词斩Java程序员面试11个问题,你会几个?2018-04-10

近日,我们在w3cschool app开发者头条上,可以看到百词斩Java程序员面经。 在分享百词斩Java面经前,w3cschool特别给程序员小伙伴们带来一些Java学习干货: 0、学习Java必备的3大神器 如果你...

W3Cschool
04/10
0
0
【转】Java Crash原因汇总

如果是Java进程不知道什么原因退出或被杀死,想要分析具体原因,一般来说分下面几步: 1. 拿到Java应用程序的日志文件 2. 查找JVM的致命错误日志 3. 查找操作系统的core dump文件 4. 使用Dtr...

mj4738
2011/12/04
0
0
JAVA工程师的工资真的很高吗?

Java工程师是个高薪的行业,让不少人羡慕不已,有很多人因为Java的高薪而转行。这也是近几年Java如此火热的原因之一。也正是因为Java如此之多,所以不少想要学习Java语言的人不禁产生一个疑问...

deng707273
04/09
0
0
Java研发大学毕业后为何找不到理想的工作

现在大学生在大学学习Java技术,毕业后直接工作,我想在大家心里这只是再平常不过的事情了,可是为啥刚一毕业的Java应聘工程师会遭到各个研发企业的拒绝,这是刚毕业的每个大学生心中的疑虑,...

我爱编程学习
06/07
0
0
JMX学习以及在log4j中的应用

前言 JMX即Java Managemen Extensions,是一个为应用程序植入管理功能的框架。一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理。 常常在编程的过程中...

buglife
2015/01/06
0
15
Java学习---Java简单认识

前言 小编在学习Java方面的基础知识,发现里面有很多是结合之前的语言的特点发展过来的,不同的地方是,Java有它自己的发展和特点。下面小编先简单地做一下总结,结合看过的1-2章的J2SE视频,...

m18633778874
04/01
0
0
一句话讲清楚什么是JavaEE

Java技术不仅是一门编程语言而且是一个平台。同时Java语言是一门有着特定语法和风格的高级的面向对象的语言,Java平台是Java语言编写的特定应用程序运行的环境。Java平台有很多种,很多的Jav...

qq58edeba279279
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

gcviewer的使用

1、没有安装git软件 在编译打包GCViewer的过程中,不能执行git命令,错误信息如下: [ERROR] Failed to execute goal org.codehaus.mojo:buildnumber-maven-plugin:1.4:create (create-build...

刀锋
10分钟前
0
0
Android LogUtil 日志优化 调试的时候打印 点击跳转

打印日志的时候,可以点击跳转 LogUtil.java public class LogUtil { private static boolean IS_DEBUG = BuildConfig.DEBUG; public static void i(String tag, String message) {......

Jay_kyzg
20分钟前
0
0
人工智能你必须掌握的32个算法(二)归并排序算法

归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子...

木头释然
23分钟前
0
0
第十四章NFS服务搭建与配置

14.1 NFS介绍 NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netap...

Linux学习笔记
46分钟前
1
0
流利阅读笔记27-20180716待学习

生了娃照样能打,两位母亲温网会师 Lala 2018-07-16 1.今日导读 现今在生儿育女后回归事业的母亲们已经非常多见,但是很少有人想到,以高强度运动与竞争激烈为特色的竞技体育项目也会有 work...

aibinxiao
47分钟前
6
0
Guava 源码分析(Cache 原理【二阶段】)

前言 在上文「Guava 源码分析(Cache 原理)」中分析了 Guava Cache 的相关原理。 文末提到了回收机制、移除时间通知等内容,许多朋友也挺感兴趣,这次就这两个内容再来分析分析。 在开始之前...

crossoverJie
59分钟前
0
0
OSChina 周一乱弹 —— 如果是你喜欢的女同学找你借钱

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @guanglun :分享Michael Learns To Rock的单曲《Fairy Tale》 《Fairy Tale》- Michael Learns To Rock 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
今天
749
19
NNS域名系统之域名竞拍

0x00 前言 其实在官方文档中已经对域名竞拍的过程有详细的描述,感兴趣的可以移步http://doc.neons.name/zh_CN/latest/nns_protocol.html#id30 此处查阅。 我这里主要对轻钱包开发中会用到的...

暖冰
今天
0
0
32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部