Java基础---其他对象
第一讲 System类
一、概述
1、System是描述系统一些信息的类,类中的属性和方法都是静态的。不能被实例化,没有提供构造函数。
2、字段摘要
out:标准输出流。默认是控制台。
in:标准输入流。默认是键盘。
二、方法
1、获取系统的属性信息:
PropertiesgetProperties();
说明:
1)此方法返回的双列集合,即键值对;因为Properties是Hahstable的子类,也就是Map集合的一个子类对象,那么通过Map方法取出该集合中的元素。
2)该集合存储的都是字符串,没有泛型定义
2、获取指定属性信息:
String getProperty(Stringkey);
3、在系统内定义特有信息:
String setProperty(Stringkey,String value);
4、如何在jvm启动时,加载一些属性信息:
通过命令:java -D<name>=<value>可以设置特有的系统属性信息
示例:
- import java.util.*;
- class SystemDemo
- {
- public static void main(String[] args)
- {
- Properties p=System.getProperties();//获取当前的系统属性
- sop(p);
- String value=System.getProperty("os.name");//获取指定键指示的系统属性
- sop("os.name="+value);
- System.setProperty("wode","My_PC");//设置指定键指示的系统属性信息
- sop(p);
- String s= System.getProperty("woshi");//当系统中没有该键值,返回null
- sop(s);
- }
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- }
第二讲 Runtime类
一、概述
1、每个java应用程序都有一个Runtime类实例,使用应用程序能与其中运行的环境相连接,应用程序不能创建自己的Runtime类的实例,是由系统底层自己创建的。
2、该类中并没有提供构造函数。说明不可以new对象。那么会直接想到该类中的方法都是静态的。查阅API文档发现,该类中还有非静态方法。说明该类肯定会提供了方法获取本来对象。而且该方法是静态的,并返回值类型是本来类型。
3、由以上特点可以看出该类淘宝开店教程使用了单例设计模式完成。
二、方法
1、获取本类对象
static RuntimegetRuntime();
2、在单独的进程中执行指定字符串命令
Processexec(String command);
3、在Process中有一个杀掉子进程的方法,可将exec方法开启的进程结束
void destroy();
示例:
- class RuntimeDemo
- {
- public static void main(String[] args)throws Exception
- {
- Runtime r=Runtime.getRuntime();//获取本类对象
- Process p=r.exec("notepad.exe");//执行记事本程序
- r.exec("notepad.exe RuntimeDemo.java");//用记事本打开指定文件
- Thread.sleep(3000);//让线程等待3秒
- p.destroy();//杀掉指定进程
- }
- }
第三讲 时间类
一、Date类
1、概述
Date类表示特定的瞬间,精确到毫秒。
java中的默认显示格式为:Mon Jun 10 22:35:21 CST2013
2、自定义格式
默认的格式不一定满足每个人的需求,那么就需要自定义格式化模式。因为Date类中的大部分方法已过时,所以只能找其子类来实现。子类DateFormat中有format方法可以实现,但是DateFormat是抽象类,不能实例化。但是其下有个SimpleDateFormat子类,可以定义时间模式伤感的句子。
具体步骤:
1)创建Date对象
2)将时间模式封装到SimpleDateFormat对象中
3)调用format方法让格式化模式指定Date对象
代码如下:
- import java.util.*;
- import java.text.*;
- class DateDemo
- {
- public static void main(String[] args)
- {
- Date d=new Date();//创建Date对象
- //sop(d);
- ////将模式封装到SimpleDateformat对象中。
- SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日E HH:mm:ss");
- //调用format方法让模式格式化指定Date对象。
- String time=sdf.format(d);
- sop(time);
- }
- public static void sop(Object ojb)
- {
- System.out.println(ojb);
- }
- }
二、Carendar类
1、概述:
1)Calendar是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH等日历字段之间的转换提供了一些方法。
2)Calendar可以对年月日等时间进行获取。并提供了相应的子段值。可参阅API文档。
2、方法:
2.1、基本获取时间
1)获取年份:Calendar.YEAR
2)获取月份:Calendar.MONTH
3)获取日期:Calendar.DAY_OF_MONTH
4)获取星期:Calendar.DAY_OF_WEEK
5)获取小时:Calendar.HOUR_OF_DAY
6)获取分钟:Calendar.MINUTE
7)获取秒数:Calendar.SECOND
2.2、设置时间:
1)根据日历的规则,为给定的日历字段添加或减去指定的时间量:
void add(int field,int amount);
2)获取指定的日历字段对应的时间值:
int get(int field);
3)将给定日历字段对应的时间值设置为给定值:
void set(int field,int value);
设置日历字段 YEAR、MONTH和DAY_OF_MONTH的值:
void set(int year,int month,int date);
示例:
- import java.util.*;
- class CalendarDemo
- {
- public static void main(String[] args)
- {
- Calendar c=Calendar.getInstance();
- sop(pattern(c));//显示今天日期和当前时间
- c.add(Calendar.YEAR,3);//年份变为3年后
- sop(pattern(c));//显示指定日期和时间
- }
- //获取指定日期和时间
- public static String pattern(Calendar c)
- {
- String s=year(c)+month(c)+day(c)+week(c)+" "+time(c);
- return s;
- }
- //获取年份
- public static int year(Calendar c)
- {
- return c.get(Calendar.YEAR);
- }
- //获取月份
- public static String month(Calendar c)
- {
- String[] yue={"一月","二月","三月","四月",
- "五月","六月","七月","八月",
- "九月","十月","十一月","十二月"};
- return yue[c.get(Calendar.MONTH)];
- }
- //获取日期
- public static int day(Calendar c)
- {
- return c.get(Calendar.DAY_OF_MONTH);
- }
- //获取星期
- public static String week(Calendar c)
- {
- String[] day={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
- return day[c.get(Calendar.DAY_OF_WEEK)];
- }
- //获取时间,格式为时:分:秒
- public static String time(Calendar c)
- {
- String s=c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND);
- return s;
- }
- //打印输出
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- }
小练习:
- /*
- 练习
- 1、获取任意年的二月有多少天:
- 思路:根据指定年设置一个时间就是
- c.set(year,2,1)//某一年的3月1日。
- c.add(Calenar.DAY_OF_MONTH,-1);//3月1日,往前推一天,就是2月最后一天。
- 2、获取前一天的现在这个时刻
- 思路:c.add(Calenar.DAY_OF_MONTH,-1);
- 3、计算有效上课天数,每周六日不上课,计算任意年从九月到十月的有效上课天数
- 思路;
- 1、根据指定年设定一个时间就是c.set(year,8,1)//某一年的9月1日
- 2、定义一个计数器,判断指定时间是否是星期六或者星期日,不是则计数加1
- 3、日期偏移量1天,直至判断到这个月的最后一天
- */
- import java.util.*;
- class OtherClassTest
- {
- public static void main(String[] args)
- {
- //练习1测试
- sop("2012年二月份有"+whatDay(2012)+"天");
- //练习2测试
- sop("昨天的现在这个时刻:"+lastNowTime());
- //练习3测试
- sop("2013年9月到10月上了"+howDay(2013)+"天课");
- }
- //练习1
- public static int whatDay(int year)
- {
- Calendar c=Calendar.getInstance();
- c.set(year,2,1);
- c.add(Calendar.DAY_OF_MONTH,-1);
- return c.get(Calendar.DAY_OF_MONTH);
- }
- //练习2
- public static String lastNowTime()
- {
- Calendar c=Calendar.getInstance();
- c.add(Calendar.DAY_OF_MONTH,-1);
- return pattern(c);
- }
- //练习3
- public static int howDay(int year)
- {
- Calendar c=Calendar.getInstance();
- c.set(year,8,1);
- int count=0;
- for (int x=c.get(Calendar.DAY_OF_MONTH); x<=30;x++ )
- {
- if(c.get(Calendar.DAY_OF_WEEK)!=1&&c.get(Calendar.DAY_OF_WEEK)!=7)
- count++;
- c.add(Calendar.DAY_OF_MONTH,1);
- }
- return count;
- }
- //获取指定日期和时间
- public static String pattern(Calendar c)
- {
- String s=year(c)+month(c)+day(c)+week(c)+" "+time(c);
- return s;
- }
- //获取年份
- public static int year(Calendar c)
- {
- return c.get(Calendar.YEAR);
- }
- //获取月份
- public static String month(Calendar c)
- {
- String[] yue={"一月","二月","三月","四月",
- "五月","六月","七月","八月",
- "九月","十月","十一月","十二月"};
- return yue[c.get(Calendar.MONTH)];
- }
- //获取日期
- public static int day(Calendar c)
- {
- return c.get(Calendar.DAY_OF_MONTH);
- }
- //获取星期
- public static String week(Calendar c)
- {
- String[] day={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
- return day[c.get(Calendar.DAY_OF_WEEK)];
- }
- //获取时间,格式为时:分:秒
- public static String time(Calendar c)
- {
- String s=c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND);
- return s;
- }
- //打印输出
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- }
第四讲 Math类
一、概述
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。该类全为静态方法。
二、方法
1、doubleceil(double d);//返回大于指定数据的最小整数
2、doublefloor(double d);//返回小于指定数据的最大整数
3、double pow(doublea,double b);//返回a的b次方
4、long round(doubleb);//返回b四舍五入的值
5、doublerandom();//返回正号的double值,是一个大于等于0.0且小于1.0的随机数
三、Random类
这是java.util中的一个单独的类,该类对象用于获取随机数。与Math中的random方法是一样的,不过这个类有自身的方法,可以将相应的随机数强转为指定基本数据类型。
如:intnextInt(int n);//返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。
小练习:
- /*
- 练习:给定一个小数,保留该小数的后n位。
- 1、先把给定小数乘以10的n次方,四舍五入保留整数部分
- 2、再把该整数除以10的n次方
- */
- class MathTest
- {
- public static void main(String[] args)
- {
- double d=retention(13.6572,2);
- System.out.println("d="+d);
- }
- //保留小数位方法
- public static double retention(double d,int n)
- {
- double d1=d*Math.pow(10,n);//先将要保留的小数位变为整数
- long l=Math.round(d1);//将小数四舍五入
- return l/Math.pow(10,n);//返回保留了指定小数位的小数
- }
- }
Java基础---其他对象的更多相关文章
- java基础(二) -对象和类
Java 对象和类 Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为.例如,一条狗是一 ...
- Java基础03-12_对象比较
对象比较 如果说现在有两个数字要判断是否相等,可以使用"=="完成 如果是字符串要判断是否相等使用"equals()" 但是如果说现在有一个自定义的类,要想判断 ...
- JAVA基础之对象的初始化
本文主要记录JAVA中对象的初始化过程,包括实例变量的初始化和类变量的初始化以及 final 关键字对初始化的影响.另外,还讨论了由于继承原因,探讨了引用变量的编译时类型和运行时类型 一,实例变量的初 ...
- java基础(一)对象
对象的创建 Test test = new Test(); Test test = new Test("a"); 其实,对象被创建出来时,对象就是一个对象的引用,这个引用在内存中为 ...
- Java基础 -- 持有对象(容器)
一 容器的用途 如果对象的数量与生命周期都是固定的,自然我们也就不需要很复杂的数据结构. 我们可以通过创建引用来持有对象,如 Class clazz; 也可以通过数组来持有多个对象,如 Class[] ...
- Java 基础之一对象导论
对象导论 1.1 抽象过程 所有编程语言都提供抽象机制.人们所能解决的问题的复杂性直接取决于抽象的类型和质量. 汇编语言是对底层机器的轻微抽象. 我们将问题空间中的元素及其再解空间中的表示称为对象.这 ...
- Java基础之对象序列化
1. 什么是Java对象序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长.但在现 ...
- Java基础 ----- 判断对象的类型
1. 判断对象的类型:instanceOf 和 isInstance 或者直接将对象强转给任意一个类型,如果转换成功,则可以确定,如果不成功,在异常提示中可以确定类型 public static vo ...
- 【Java基础】对象的具体创建过程
所有的类(以Dog类为例)在第一次使用时,动态的加载到JVM中,当首次创建Dog对象时,或者是Dog类的静态方法.静态属性域在第一次被访问时,JVM解释器查找到classpath,定位到Dog.cla ...
随机推荐
- 关于线程和junit注入失败的问题
问题: 在使用spring的时候,通常会使用注释@Autowired或@Resource注入java Bean; 但是在碰到线程类和测试类的时候就不支持注入方式了. 定义: 线程类:继承thread或 ...
- 一份关于npm的新手指南
Node.js使得在服务器端使用JavaScript编写应用程序成为可能.它是基于V8Javascript运行时并且使用C++编写的,所以它的速度很快.最初,它旨在作为应用程序的服务器环境,但是开发人 ...
- 【JAVASCRIPT】React学习- 数据流(组件通信)
摘要 react 学习包括几个部分: 文本渲染 JSX 语法 组件化思想 数据流 一 组件通信如何实现 父子组件之间不存在继承关系 1.1 父=>子通信 父组件可以通过 this.refs.xx ...
- 【Django】url传递参数
1. url传递参数的特殊字符 在压缩后,可能出现 + - = 空格 这类特殊字符,需要在传递前进行url编码 urllib.enquote(string) 获取参数后 urllib.un ...
- Spring-Framework 源码阅读之AnnotationBeanUtils
Java程序员,就是要学会一个名字叫做"春"的东西,这玩意运用的非常的广泛,现在如果你的业务系统或者软件没有在这个东西上开发,都不要意思拿出来.因为你更不上时代了.在平时的工作的中 ...
- 仿PC版微信的练手项目(可实时通讯)
仿PC版微信的DEMO 本项目是由一个仿PC版微信的vue前端项目,和一个使用leancloud进行数据存储的.提供WebSocket的node后端项目构成. 本项目使用的技术栈:vue + vue- ...
- iOS Socket 整理以及CocoaAsyncSocket、SRWebSocket源码解析(一)
写在准备动手的时候: Socket通讯在iOS中也是很常见,自己最近也一直在学习Telegram这个开源项目,Telegram就是在Socket的基础上做的即时通讯,这个相信了解这个开源项目的也都知道 ...
- python-冒泡排序,升序、降序
冒泡排序 这个算法的名字由来是因为越大的元素会经交换慢慢浮'到数列的顶端. 冒泡排序的基本思想:重复走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来,直到没有再需要交换,完成排序 ...
- python常用模块(2)
之前学了两个常用的模块collections和re模块今天我们接着学习其他几个常用模块.都是比较常用的之前的学习或多或少也有所接触比如说时间模块等. 预习: 写一个验证码 首先 要有数字 其次 要有字 ...
- ubuntu系统普通用户sudo命令执行报错解决方案
通过adduser user1命令创建普通用户,且使该用户具有sudo权限(将该新用户user1添加到sudo或root用户组中,或者修改/etc/sudoer文件),但是依然无法执行sudo指令,会 ...