您的位置:首页 > 职场人生

黑马程序员-java基础之常用对象

2014-11-04 16:26 369 查看
--------------------- android培训java培训、java学习型技术博客、期待与您交流! -------------------
一Object
所有类的直接或者间接父类,Java认为所有的对象都具备一些基本的共性内容,这些内容可以不断的向上抽取,最终就抽取到了一个最顶层的类中的,该类中定义的就是所有对象都具备的功能。

注意:我们自定义的类也默认继承Object类。

Object 中常用的方法

1比较

boolean equals(Object obj):用于比较两个对象是否相等,其实内部比较的就是两个对象地址。

实际应用中根据对象的属性不同,判断对象是否相同的具体内容也不一样。所以在定义类时,一般都会复写equals方法,建立本类特有的判断对象是否相同的依据。

  public boolean equals(Object obj){

     if(!(obj instanceof Person))

         return false;

     Person p = (Person)obj;

     return this.age == p.age;

2获取

Class getClass():获取任意对象运行时的所属字节码文件对象。

反射中有应用。

int hashCode():返回该对象的哈希码值。支持此方法是为了提高哈希表的性能

String toString():将对象变成字符串;

默认返回的格式:

类名@哈希值 = getClass().getName() + '@' + Integer.toHexString(hashCode())

  为了对象对应的字符串内容有意义,可以通过复写,建立该类对象自己特有的字符串表现形式。

  public String toString(){

     return "person : "+age;

3==和equals的区别:

==

      可以用于比较基本数据类型,比较的就是基本数据类型的值是否相等。

      可以用于比较引用数据类型,比较的是对象的地址值是否相等。

==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。

如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new
Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的地址值。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较

equals

在Object中equals()方法调用的就是==。equals方法只能用于比较引用数据类型,是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。在实际开发中equals()经常被复写

例如,对于下面的代码:

String a=new String("foo");

String b=new String("foo");

两条new语句创建了两个对象,然后用a,b这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即a和b中存储的数值是不相同的,所以,表达式a==b将返回false,在String中复写了equal方法,比较的是对象中的内容,而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true。

在实际开发中通常equals,toString,hashCode,在应用中都会被复写,建立具体对象的特有的内容

二System
概述: 与系统相关的类

      常用方法

      staticPropertiesgetProperties()

             返回一个装有系统信息的Properties集合

通过getProperties()

获取系统信息   

getProperty(String key)

 获取指定健的值

setProperty();

 设置系统信息

java –D name=value

动态加载系统属性信息

代码示例

import java.util.*;

class SystemDemo

{

      public static void main(String [] args)

      {

//获取系统的属性信息,并存储到了Properties集合中。

//Properties是hashtable的子类也是map集合中的一员

//properties集合中存储都是String类型的键和值。

//该集合中没有定义泛型。

 

             Properties prop = System.getProperties();

             for(Object obj : prop.keySet())

{

      String value = (String)prop.get(obj);

      System.out.printn(obj+”::”+value);

}

//在系统中自定义特有信息

System.setProperty("name","liaoxuan");

             //通过指定键获取系统中的信息

      System.out.println(System.getProperty("name")); }

}

 

Runtime

      运行类

      该类中没有构造函数,且该类中有非静态函数。那么该类肯定会提供方法获取本类对象,而且该方法是静态的,并且返回值类型是本类类型。由这个特点看出该类使用了单例设计模式。

      常用方法

      Static Runtime getRuntime();

             获取本类对象

      exec();

             执行文件,并返回一个Process对象,该对象可用来控制进程,并获得相关信息

      代码示例

      class RuntimeDemo

      {

             public static void main(String [] args)throws Exception

{

      //获取Runtime对戏

      Runtime rt = Runtime.getRuntime();

      //开启qq进程并返回Process对象

      Process p = rt.exec("D:\\Program Files\\Tencent\\QQ\\QQProtect\\Bin\\QQProtect.exe");

      //exec(notepad.exe   System.java)启动一应用程序打开与之相关联的文件。

      Thread.sleep(5000);

      //结束进程    

      p.destroy();

}

}

三Data
 概述:描述时间的类

      日期和时间模式

      

字母
日期或时间元素
表示
示例
G
Era 标志符
Text
AD
y

Year
1996; 96
M
年中的月份
Month
July; Jul; 07
w
年中的周数
Number
27
W
月份中的周数
Number
2
D
年中的天数
Number
189
d
月份中的天数
Number
10
F
月份中的星期
Number
2
E
星期中的天数
Text
Tuesday; Tue
a
Am/pm 标记
Text
PM
H
一天中的小时数(0-23)
Number
0
k
一天中的小时数(1-24)
Number
24
K
am/pm 中的小时数(0-11)
Number
0
h
am/pm 中的小时数(1-12)
Number
12
m
小时中的分钟数
Number
30
s
分钟中的秒数
Number
55
S
毫秒数
Number
978
z
时区
General time zone
Pacific Standard Time; PST; GMT-08:00
Z
时区
RFC 822 time zone
-0800
 

      代码示例

import java.text.SimpleDateFormat;

import java.lang.System;

class DateDemo

{

      public static void main(String [] args)

      {

      //获取当前时间

      Date d=new Date();

      System.out.println(d);

      //打印的时间看不懂,希望有便于阅读的模式

      //将模式封装到SimpleDateformat对象中

      SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日E hh:mm:ss");

      //调用format方法将Dtae对象作为参数传入,用指定格式格式化时间

      String time = sdf.format(d);

      System.out.println(time);

      }

}

四Calendar
概述:操作日历的类

      常用方法

      static Calendar getInstance()

             返回一个子类对象

      get
(int field)


             获取给定日历字段的值。

set
(int field, int value)


   
将给定的日历字段设置为给定值

通过Calendar获取当前时间

代码示例

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);

        }

}

小练习

获取任意年的二月天数

 
public static int whatDay(int year)
{
Calendar c=Calendar.getInstance();
c.set(year,2,1);
c.add(Calendar.DAY_OF_MONTH,-1);
System.out.println(c.get(Calendar.DAY_OF_MONTH));
 

五Math
概述:
Math
类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数.该类没有构造函数,方法均为静态的   

      常用方法

             1 ceil():返回大于参数的最小整数。

             2 floor():返回小于参数的最大整数。

             3 round():返回四舍五入的整数。

             4 pow(a,b):a的b次方。

5random()返回带正号的
double
值,该值大于等于
0.0
且小于
1.0
。返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。

代码示例

class Math

{

        public static void main(String[] args)

        {

                double c=new Math().ceil(12.45);

                //返回的c的值为13

                double f= new Math().floor(12.45);

                //返回的f的值为12

                double r= new Math().round(12.45);

                //返回的值为12

                double p= new Math().pow(2,3);

                //返回的p的值为8

                double rd= new Math().random();

                //返回的是一个随机值,在0.0-1.0区间之间

                         

        } 

 

}           

六Random     
概述:此类的实例用于生成伪随机数流,与Math中的random()不同,他可以直接生成其他基本类型的随机数    

             常用方法

                    int nextInt()返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的
int值。

                    int nextInt(int n)返回一个伪随机数,它是取自此随机数生成器序列的、

                    在 0(包括)和指定值(不包括)之间均匀分布的
int值。

七Scannner
概述:一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。可以获取从键盘的输入数据
             该类构造时需要传入一个指定的源,从该源中扫描数据。

             常用方法      

                    sc.nextInt();获取整型数据

                    sc.nextLine();获取字符串数据

代码示例

class ScannerDemo

{

        public static void main(String[] args)

        {       

                Scanner sn=new Scanner(System.in); 

                int value=0;

                value=sn.nextInt();

                System.out.println(value);

        }

}

 --------------------- android培训java培训、java学习型技术博客、期待与您交流! -------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: