2016/04/17

package com.wode;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Random;

import javax.activation.FileDataSource;
/***
 *
 * @author Administrator
 *Random类     Math使用方法  以及反射机制
 */
public class Test04_16 {

public static void main(String[] args) throws Exception {
  //Random类 表示随机产生数 
  Random random = new Random();
  System.out.println(random.nextInt());
  //random.nextInt()  括号中没有给参数  所以 随机产生int类型的数  并且范围在long中
  System.out.println(random.nextInt(10));
  //random.nextInt(10) 表示 随机产生int类型的0-9 十个数字  他是前包后不包
  //如果想随机到十  那么代码就应该是:System.out.println(random.nextInt(10)+1);

//---------------------------------------萌萌的分割线君-------------------------------------------------------
  
  //Math  的使用方法
  //Math类  是一个数学工具类 在Java语言中  常用的方法都在里面  可以通过 Math.方法名()  进行调用
  System.out.println(Math.abs(-50));//运行结果 : 50
  //Math.abs  表示输出()中数字的绝对值 
  System.out.println(Math.max(5, -9));//运行结果: 5
  //Math.max  输出()中最大的值 
  System.out.println(Math.min(5, -9));//运行结果: -9
  //Math.min   输出()中最小的值
  System.out.println(Math.round(5.4));//运行结果: 5
  //Math.round  输出()中四舍五入后的值
  System.out.println(Math.floor(-8.1));// 运行结果: -9.0
  //Math.floor   输出()中最大接近于正无穷的数  也就是向下取整   如果是()中是9.9 返回的值为9 这就是向下取整
  System.out.println(Math.ceil(-8.9));//运行结果:  -8.0
  //Math.ceil  表示向上取整  如果()中是8.1  返回值是9.0 这就是向上取整
  System.out.println(Math.random());
  //Math.random  随机产生 0-1 之间的随机值  有可能产生0 几率很小 注意()中不能填入参数  
  //如果想随机0-10 之间的数    代码为:System.out.println(Math.random()*10);

//---------------------------------------萌萌的分割线君-------------------------------------------------------
  
  //类加载机制由类加载器完成    反射:Java的反射机制是Java的特征之一
  //简单的一句话:反射就是运行时探究和使用编译未知的类
  
  Dog dog = new Dog();
  Class clazz = dog.getClass();//表示获得class的具体实例   前提是知道有具体的实例  就可以使用getClass()
  System.out.println(clazz);//运行结果:  class com.wode.Dog 能知道他来自那个类  以及具体的地方
  Class clazz1 = Dog.class;//知道类的名字  但是没有实例对象
  Class clazz2 = Class.forName("com.wode.Dog");//运行期间动态传入 在不知道实例以及类的名字的时候使用
  // Class.forName   会有可能产生异常   为了代码好看我将异常抛出  并且抛出的Exception  所有异常的父类  以便后面有异常的时候再次抛出异常
  
  //Filed  类  :提供类或者接口所有的属性信息  即使是私有的也能获得
  Field [] fields = clazz2.getDeclaredFields();//获得Dog 所有属性并且用数组储存
  for (int i = 0; i < fields.length; i++) {//使用循环的方法打印 出Dog类中所有的属性
   System.out.println(fields[i]);
  }
  //Filed 获得了Dog 中所有的属性 那么怎么样修改?
  for(Field field:fields){//循环出 所有的属性
   if (field.getName().equals("age")) {//找到age属性并且修改  如果想修改name属性 一定会报错  因为name属性是受保护的只能看到而不能修改
    field.set(dog, 8);
    System.out.println(dog.age);
   }
  }
  
  //Method类:  获取Dog 里面的方法 
  Method [] methods = clazz.getDeclaredMethods();
  //通过getDeclaredMethods 来获得Dog里的所有方法  并且用for 循环输出
  for (int i = 0; i < methods.length; i++) {
   System.out.println(methods[i]);
  }
  //获得方法后 又怎么样去调用方法?          
  Method method = clazz.getMethod("show",String.class );
  //使用   getMethod  来调用方法
  method.invoke(dog, "啊汪");
  //然后使用   method.invoke 来使用方法 括号里分别是实例化的对象 和需要修改的属性
  
  //Constructor 类 :获得Dog里的构造函数
  Constructor constructor = clazz.getDeclaredConstructor(null);//使用 getDeclaredConstructor 来获取Dog里的无参构造函数
  constructor.newInstance(null);//调用无参的构造函数
  Constructor constructor2 = clazz.getConstructor(int.class,String.class);
  constructor2.newInstance(5,"有参");//调用有参构造函数
  //Object o = clazz.newInstance();  //使用Object 实例化对象  因为Object 是父类 所有不会有强转
  //Dog dog2 = (Dog) clazz.newInstance();//使用newInstauce 实例化对象  这里是向下转型所以会涉及到强转
  //newInstauce 也能实例化对象,通过调用构造函数来实例化对象 并且Class.Constructor 都提供了newInstauce方法
  //new:是强类型 相对高效 能调用任何类public类
  //newInstauce :是弱类型  效率低 只能调用构造函数
 }
}

package com.wode;
/***
 *
 * @author Administrator
 *创建  一个狗类
 */
public class Dog {

private String name;//private 私有的  封装的思想
 int age;
 public void show(String name) {
  System.out.println(name+":汪汪汪"+" "+"我:"+age+"岁");
 }
 //下面提供相应的get和set 方法
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public Dog() {
  System.out.println("无参构造函数!");
 }
 
 public Dog(int age,String neme){
  super();
  this.age = age;
  this.name = neme;
  System.out.println("有参构造函数!");
 }
}

时间: 2024-07-29 15:15:18

2016/04/17的相关文章

分布式技术一周技术动态 2016.04.17

分布式系统实践 1. 架构的本质是管理复杂性,微服务本身也是架构演化的结果  http://mp.weixin.qq.com/s?__biz=MzA5Nzc4OTA1Mw==&mid=411129391&idx=1&sn=ebf06fb5cc4a5f57f86341ba4114cab8&scene=0#wechat_redirect 要点: 这篇文章介绍了携程, netflix和SoundCloud等知名互联网公司的微服务架构实践, 总结了微服务架构的演化本质上是管理架构复

ACM-南京理工大学第八届程序设计竞赛-网络赛(2016.04.17)

A.偷吃糖果Time Limit: 1000Ms Memory Limit: 65536KB Description小鱼喜欢吃糖果.他有两盒糖果,两盒糖果分别仅由小写字母组成的字符串s和字符串t构成.其中'a'到'z'表示具体的某种糖果类别.他原本打算送给他喜欢的女生,但是要送给女孩子的话两盒糖果不能有差别(即字符串s和t完全相同).所以,他决定偷吃几块,他吃糖果的策略是每次选出一盒糖果中两个连续的同种类别的糖果,然后吃掉其中一块.该策略可以使用多次.例如一盒糖果是'rrrjj',他可以把这盒糖

[野狐行][2016/04/11][群直播系列2][那些年让我们郁闷不已的游戏保护]

最近应广大朋友的建议,增加群内直播系列,主要内容包括不仅限于“辅助行业探讨,内幕揭秘,行业八卦”.每周周末,群内直播系列:1.2016/04/02 第一期下载地址: http://pan.baidu.com/s/1bpnwPeZ 2.2016/04/11 第二期下载地址: http://pan.baidu.com/s/1nvs22xj

KaOS 2016.04 发布,桌面 Linux 发行版

KaOS 2016.04 发布了,KaOS是一份桌面Linux发行,其特色在于最新版本的KDE桌面环境及其他流行的使用Qt工具包的软件程序.它最初基于Arch Linux,但从2013年四月起,开发者们开始创建他们自己的软件包,现在这些软件包可以从KaOS自己的软件仓库里获得.KaOS采用滚动发布开发模 式,并且只面向64位计算机系统. 该版本主要是为了纪念KaOS三周年而发布的,支持Qt 5.6,桌面得到较大的更新, QtWebengine被qupzilla替代作为默认的浏览器,不在需要手动更

分布交互式CosiMate 8.1 2016.04多学科协同仿真计算平台

分布交互式CosiMate 8.1 2016.04多学科协同仿真计算平台 电磁人体天线模型管理分析工具EMCoS Studio 2017 优化工具Keysight 89600 VSA WLA 22.21 5G物联网雷达信号设计 CosiMate技术提供了一种解决方案来克服模拟集成的大规模动态系统的难度.在实际的大型Simulink模型上测量到2到11的潜在加速度.通过传统的分割技术(将全阶模型分解成几个较小的部分)并在单台或多台计算机上进行模拟,实现了模拟时间的显着减少.QQ:16264558

java 时间格式化(2016.04.12 12:32:55)

输入的时间格式如:2016.04.12 12:32:55所示: 想要获取一定格式的日期,时间的方法 1 String startString = "2016.04.25 12:25:44" 2 SimpleDateFormat sf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 3 SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:s

APP上架审核被拒(新增2016.04)

2016最新版App Store应用审核指南完整版(红色字体为新增内容) 1.0Terms and conditions(法律与条款) 1.1作为App Store的应用开发者,你必须接受如下条款:Program License Agreement (PLA),Human Interface Guidelines (HIG),以及任何你与apple签订的许可和合同.以下规则和示例是为了协助你的应用更快通过审核上架,而不是修正或取代之前的条款. 2.0 Functionality(功能) 2.1存

2016/1/18 更正补充 2016/1/17 矩形面积 1,构造方法初始化 长和宽 ,2, 定义成员方法求矩形面积

1 package caipiao; 2 3 import java.util.*; //引入java工具.util是utiliy的缩写,意为多用途的, 4 // 工具性质的包 这个包中主要存放了:集合类(如ArrayList,HashMap等), 5 //随机数产生类,属性文件读取类,定时器类等类. 6 public class JuXing1 {//这些类极大方便了Java编程,日常java编程中,经常要用到这些类. 7 //属性 8 private double chang; //私有化

2016.6.17——Valid Parentheses

Valid Parentheses 本题收获: 1.stack的使用 2.string和char的区别 题目: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in the correct order, "()" and "()[]{}&qu