热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java学习(4)-Java.Lang包

Introduction:ThisarticledescribesJava.langandsomeimportantclasseswhichbeinclud
 
Introduction: This article describes Java.lang and some important classes which be included.
1.简单类型包装器
1.1)为什么要简单类型包装器(wrapper)如Number, Byte, Double, Long?
答:因为简单类型int, char不是对象层次上封装,简单类型只能处理传值,不能处理引用这有性能上的原因。所以要对这些简单的类型进行封装。
1.2)Number是下面几个类的超类,它本身是一个抽象类
       Byte , Double , Float , Integer , Long , Short
       认识isInfinite(), IsNaN(),try to consider following code snippet (d1是无穷大,d2是非数字)
       Double d1= new Double(1/0.);
       Double d2=new Double(0/0.);
       数字与字符串的转换
1.3)Character   
1.4)Boolean
2.Process Vs. Runtime
       抽象类Process 封装了一个进程      ____也就是说一个正在执行的程序。它主是用来保存由Runtime类中的exec()方法返回的类型.常见方法: void destroy() Int waitFor() throws InterrupedException;
       Runtime类封装了运行时的环境,它的用法是:一般一实例化一个Runtime对象,而是通过调用静态方法Runtime.getRuntime()而获得对当前Runtime对象的引用。注意:小应用程序(Applets)和其它不可信赖的编码由于因为安全原因不能调用任何Runtime()方法。
       这两个对象的最普遍用法是:内存管理和执行进程
实验要求: 获得你当前的空闲内存大小;
在java程序中调用其它的应用程序;
3. System – 标准的输入,输出和Java运行时错误输出存储在变量int, out, err中。而System类就是用来保存这这些变量和静态方法的
       System.currentTimeMillis() 可以用来统计出你的程序片断所运行的时间,单位是毫秒
long start, end;
start=System.currentTimeMillis();
for(int i=0;i<10000;i++);
end=System.currentTimeMillis();
System.out.println(“Elapsed time:”+(end-start));
       System.arraycopy() 快速复制任意类型的数组
       System.getProperty()-得到Java系统所用的环境变量
System.getProperty(“user.dir”)//得到当前用户目录的路径
4. Math
       三角函数:
 static double sin(double arg) //返回由以弧度为单位由arg指定的角度的正弦值
 static double cos(double arg)
 static double tan(double arg)
 static double asin(double arg)
 static double acos(double arg)
 static double atan(double arg) / static double atan2(double x, double y)
       指数函数
static double exp(double arg) // 返回arg为底的e次幂
static double log(double arg)
static double pow(double y, double x)
static double sqrt(double arg)
       舍入函数
 abs()
 ceil()/floor()
 max()/min()
 rint()/round()
       其它函数
static double IEEEremainder(double dividend, double divisor) // 返回dividend/divisor的余数
static double random() //返回一个伪随机函数
static double toRadians(double angle)
static double toDegree(double angle)
 
5.Runnable接口/Thread 类,ThreadGroup类—支持多线程编程
下面的代码向你展示了如何生成一个新thread类,因为它摒弃了java2中的suspend()和
resume()的方法,所以我们要着重看一下,它是如何实现这两个方法的.
public class NewThread extends Thread{
    boolean suspendFlag;
    /** Creates a new instance of NewThread */
    public NewThread(String threadname,ThreadGroup tgOb) {
        super(tgOb,threadname);
        System.out.println("New thread:"+this);
        suspendFlag=false;
        start();
    }
 
    public void run(){
     try{
      for(int i=5;i>0;i--){
         System.out.println(getName()+";"+ i+"runhere");
         Thread.sleep(1000);
         synchronized(this){
           while(suspendFlag){
            wait();
           }
         }
       }
     }catch (Exception e){
      System.out.println("Exception in "+ getName()) ;
     }
     System.out.println(getName()+"exiting.");
    }
   void mysuspend(){
       System.out.println("suspendHere") ;
     suspendFlag=true;  
   }
   synchronized void myresume(){
     suspendFlag=false;
     notify();
   }
}
下面的代码向你显示了使用这个thread类,以及如何从一个线程组中得到相应的类的使用
     ThreadGroup groupA=new ThreadGroup("Group A");
      ThreadGroup groupB=new ThreadGroup("Group B");
      //创建4个线程,并且给它们分类到不同的线程组中
NewThread ob1=new NewThread("One",groupA);
      NewThread ob2=new NewThread("Two",groupA);
      NewThread ob3=new NewThread("Three",groupB);
      NewThread ob4=new NewThread("Four",groupB);
      //ThreadGroup.list()方法并无太大作用仅能输出一些ThreadGroup的信息
groupA.list();
      //创建一个线程数组用来存放该组内的线程,注意activeCount()方法能返回线程组及该线程组的所有子类的活动线程的数量
Thread tga[]=new Thread[groupA.activeCount()];
      //把线程组中所有活动的线程都copy 到一个指定的数组中去,函数原型是
      //public int enumerate(Thread[] list)
//Copies into the specified array every active thread in this thread group and its subgroups.
      groupA.enumerate(tga);
//suspend each thread
       for(int i=0;i
        ((NewThread)tga[i]).mysuspend();     }
//resume each thread
for(int i=0;i
          ((NewThread)tga[i]).myresume();         }
//等待所有的线程结束
try{
         System.out.println("Waiting for threads to finish.");
         ob1.join();
         ob2.join();
         ob3.join();
         ob4.join();
         }catch (Exception e){
           System.out.println("Exception in Main thread");
         }
#
 

推荐阅读
  • 本文介绍了Java高并发程序设计中线程安全的概念与synchronized关键字的使用。通过一个计数器的例子,演示了多线程同时对变量进行累加操作时可能出现的问题。最终值会小于预期的原因是因为两个线程同时对变量进行写入时,其中一个线程的结果会覆盖另一个线程的结果。为了解决这个问题,可以使用synchronized关键字来保证线程安全。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
author-avatar
mobiledu2502922357
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有