`
黑马程序员-muma
  • 浏览: 3916 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

黑马程序员____常用类(了解)

 
阅读更多

------- android培训java培训、期待与您交流! ----------

 

黑马程序员____常用类(了解)

1String

 

String

 

String表示字符串,所谓字符串,就是一连串的字符;

 

String是不可变类,一旦String对象被创建,包含在对象中的字符序列(内容)是不可变的,直到对象被销毁;

 

 

 

常量池:JVM中一块独立的区域存放字符串常量和基本类型常量(public static final)。

 

String使用private final char value[]来实现字符串的存储,也就是说String对象创建之后,就不能再修改此对象中存储的字符串内容,就是因为如此,才说String类型是不可变的.

 

String对象比较:

 

单独使用""引号创建的字符串都是常量,编译期就已经确定存储到常量池中;

 

使用new String("")创建的对象会存储到堆内存中,是运行期新创建的;

 

使用只包含常量的字符串连接符如"aa" + "bb"创建的也是常量,编译期就能确定,已经确定存储到常量池中;

 

使用包含变量的字符串连接符如"aa" + s1创建的对象是运行期才创建的,存储在堆中;

 

 

 

Eg

 

package string;

 

 

 

public class StringDemo {

 

       public static void main(String[] args) {

 

              /*

 

               *  "" 其实表示的是  String的匿名对象

 

               */

 

              String s = "";

 

              /**

 

               * String()    初始化一个新创建的 String 对象,使其表示一个空字符序列。

 

               *  "",不是表示 null

 

               *  String(String original)

 

               *  String s = new String("asd");// s 的值就是 asd

 

               */

 

              s = new String();//""

 

              String s1  = new String("11");

 

              String s2  = new String("11");

 

              System.out.println(s1 == s2);//false

 

              String s3 = "22";

 

              String s4 = "22";

 

              System.out.println(s3 == s4);//true

 

              System.out.println(s3 == s2);//false

 

              String  s5 = "2" + "2";//这句话其实在编译器编译后的class文件中已经变成  "22"

 

              //s5创建了几个对象?//回答:最多一个,如果常量池里面没有就是创建一个,如果常量池里本来就有就是创建零个!下面的str一样的道理。

 

              String str = "A" +"B"+ "C" +"D" +"E";//String str = "ABCDE";

 

              System.out.println(s3 == s5);//true

 

              /**

 

               * String特点:     不可变的,  一个String对象的内容不能变,一旦内容变量该对象就变成一个新的String对象了

 

               *   String  str = "AAA";

 

               *   str = str+"12";

 

               */

 

              String str1 = "ABCDE";

 

              System.out.println(str == str1);//true

 

              String str2 = "ABC" + "DE";

 

              System.out.println(str == str2);//true

 

              String  ss = "AB";

 

              String str3 = ss + "CDE";//这里的str3在运行期才能确定内容值

 

              System.out.println(str3 == str2);//false

 

              String str4 = getStr() +"CDE";//在运行期才能确定 str4的值

 

              System.out.println(str == str4);//false

 

              System.out.println(str3 == str4);//false

 

              /*

 

               *  String s = "cd";      //一个String对象

 

                     s = s + "itcast";      //itcast也是String对象, 最后的s的值cditcast,也是一个String对象

 

                     System.out.print(s);

 

               * */

 

       }

 

       public static String getStr(){

 

              return "AB";

 

       }

 

}

 

 

 

Eg:

 

package reviewDemo;

 

 

 

publicclass Demo20 {

 

    publicstaticvoid main(String[] args) {

 

       //s1,s2只新建了一个对象

 

       String s1 = "你好";

 

       String s2 = "你好";

 

      

 

       //s3,s4新建了两个对象

 

       String s3 = "你好";

 

       String s4 = "你好";

 

    }

 

}

 

 

 

 

2String方法

 

 

 

String():初始化一个新的 String 对象,使其表示一个空字符序列,并不是返回空(不等于 null)

 

String(StringBuffer buffer):根据StringBuffer对象来创建String对象;

 

String(StringBuilder builder):同上

 

char charAt(int index):取字符串中指定位置的字符,index0开始计算。

 

String concat(String str):连接字符串,等同于+”;

 

boolean contentEquals(StringBuffer buffer):若二者包含的字符序列相同时就返回true;

 

boolean equals(Object obj):将该字符串与指定对象比较,若二者包含的字符序列相等返回true

 

boolean equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写;

 

byte[] getBytes():将该字符串转换成byte数组;

 

 

 

int indexOf(String str):找出str字符串在该字符串中第一次出现的位置;

 

int indexOf(String str, int fromIndex) 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始;

 

int lastIndexOf(String str) 返回指定子字符串在此字符串中最后一次出现处的索引;

 

int length():返回当前字符串长度;

 

String replace(char oldChar, char newChar) :返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。

 

String replaceAll(String regex, String replacement) 使用给定的字符串replacement 替换此字符串所有的regex字符串;

 

boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始.

 

 

 

String[] split(String regex)把字符串按指定的字符串分隔开。

 

String substring(int beginIndex) 返回一个新的字符串,从beginIndex开始截取,它是此字符串的一个子字符串;

 

String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串;[begin,end)

 

char[] toCharArray() 将此字符串转换为一个新的字符数组。

 

String toLowerCase() 将此 String 中的所有字符都转换为小写;

 

String toUpperCase()转成大写;

 

static String valueOf(基本类型 obj):把基本类型值转成字符串;

 

String trim() :忽略字符串前导空白和尾部空白。

 

String小练习

 

 

 

判断字符串是否由数字组成:

 

 

 

package reviewDemo;

 

 

 

publicclass Demo20 {

 

    publicstaticvoid main(String[] args) {

 

 

 

       String s1 = "123456789";

 

       String s2 = "12345  6789";

 

       System.out.print(isnum(s1));

 

System.out.print(isnum(s2));

 

    }

 

   

 

    publicstaticboolean isnum(String s){

 

       char []ch = s.toCharArray();

 

       for (char c : ch) {

 

           if(!(c > '0' && c <= '9')){

 

              returnfalse;

 

           }

 

       }

 

       returntrue;

 

    }

 

}

 

 

 

输出:

 

 

 

true

 

false

 

 

 

判断字符串是否为空:

 

分析:

 

字符串的空有两种情况:1null2"";

 

package reviewDemo;

 

 

 

publicclass Demo21 {

 

    publicstaticvoid main(String[] args) {

 

      

 

       String s1 = "";

 

       System.out.println(isimpty(s1));

 

      

 

    }

 

   

 

    publicstatic String isimpty(String s){

 

 

 

       if(s != null & !"".equals(s)){

 

           return"不为空";

 

       }

 

       return"为空!";

 

    }

 

}

 

 

3StringBuffer StringBuilder

 

String是不可变类,一旦String对象被创建,包含在对象中的字符序列是不可变的,直到对象被销毁;

 

 

 

StringBuffer StringBuilder对象则是可变的!

 

 

 

举例说明这两个的好处:(不用每次新建对象,效率高!)

 

 

 

package reviewDemo;

 

 

 

publicclass Demo22 {

 

    publicstaticvoid main(String[] args) {

 

      

 

       String s = "";

 

       long begintime = System.currentTimeMillis();

 

       for(int i = 1;i <= 100000;i++){

 

           s += i;

 

       }

 

      

 

      

 

       long endtime = System.currentTimeMillis();

 

       long time = endtime - begintime;

 

       System.out.println("运行时间为:"+time);

 

      

 

       StringBuffer s1 = new StringBuffer();

 

       s = "";

 

       begintime = System.currentTimeMillis();

 

       for(int i = 1;i <= 100000;i++){

 

           s = ""+i;

 

           s1 = new StringBuffer(s);

 

       }

 

      

 

       endtime = System.currentTimeMillis();

 

       time = endtime - begintime;

 

       System.out.println("运行时间为:"+time);

 

      

 

    }

 

}

 

 

 

输出:

 

运行时间为:82922

 

运行时间为:15

 

可以看得出:StringBuffer这两个效率相当高!

 

 

 

StringBuffer  是线程安全的;

 

StringBuilder是线程不安全的,性能高点,推荐使StringBuilder(jdk1.5出现)

 

StringBuffer的字符序列是可变的(通过append等方法操作)

 

StringBuffer    String之间的转换;

 

String toString() 返回此序列中数据的字符串表示形式。

 

StringBuffer(String str):以指定的字符串创建StringBuffer对象。

 

 

 

 

 

 

 

StringBuffer方法

 

 

 

public StringBuilder()构造一个不带任何字符的StringBuilder对象。

 

StringBuffer(String str) :构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。

 

StringBuffer append(Object o) :将指定的任意类型对象追加到此StringBuffer 对象。

 

StringBuffer insert(int offset, Object o) :将任意类型参数的字符串表示形式插入此序列中。

 

StringBuffer delete(int start, int end) :移除此序列的子字符串中的字符。

 

StringBuffer deleteCharAt(int index): 移除此序列指定位置的 char 

 

 

 

Eg

 

 

 

package reviewDemo;

 

 

 

/**

 

 * StringBuilder StringBuffer:

 

    把字符串“ABCDE;

 

    转变成字符串“A,B,C,D

 

 */

 

 

 

publicclass Demo23 {

 

    publicstaticvoid main(String[] args) {

 

       //第一种方法:往里面插入;

 

       StringBuilder sb = new StringBuilder("ABCDE");

 

       sb.deleteCharAt(sb.length()-1);

 

       System.out.println(sb);

 

       for (int i = 0; i < sb.length(); i+=2) {

 

           sb.insert(i, ",");

 

       }

 

       sb.deleteCharAt(0);

 

      

 

       System.out.println(sb);

 

      

 

      

 

       //第二种方法:往里面追加,要追加必须遍历,必须换为数组!

 

       sb = new StringBuilder("ABCDE");

 

       sb.deleteCharAt(sb.length()-1);

 

       System.out.println(sb);

 

       char []cs = sb.toString().toCharArray();

 

       StringBuilder sb1 = new StringBuilder();

 

       for (char c : cs) {

 

           sb1.append(c).append(",");

 

       }

 

       sb1.deleteCharAt(sb1.length()-1);

 

       System.out.println(sb1);

 

    }

 

}

 

 

 

 

 

编写一个程序,这个程序把一个整数数组中的每个元素用逗号连接成一个字符串,例如,根据内容为{123}的数组形成内容为"1,2,3"的字符串。

 

 

 

package reviewDemo;

 

/**

 

 * 编写一个程序,

 

 * 这个程序把一个整数数组中的每个元素用逗号连接成一个字符串,

 

 * 例如,根据内容为{123}的数组形成内容为"1,2,3"的字符串。

 

 */

 

 

 

publicclass Demo24 {

 

    publicstaticvoid main(String[] args) {

 

       int []i = {1,2,3,4,5};

 

       StringBuilder sb = new StringBuilder();

 

       for (int j : i) {

 

           sb.append(j).append(",");

 

       }

 

       sb.deleteCharAt(sb.length()-1);

 

       System.out.println(sb);

 

    }

 

}

 

 

 

 

 

 

 

 

4MathRandom

 

 

 

Math

 

public final class Math extends Object

 

以下X表示double,float,int, long

 

abs(X x):求绝对值

 

max(X x1,X x2):求最大值

 

min(X x1,X x2):求最小值

 

public static double random():返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。和使用new java.util.Random一样

 

Math.PI;

 

 

 

Random

 

负责生成伪随机数;

 

Random() 创建一个新的随机数生成器。

 

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

 

int nextInt(int n)  返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值n(不包括)之间均匀分布的 int 值。

 

 

 

package reviewDemo;

 

 

 

publicclass Demo26 {

 

    publicstaticvoid main(String[] args) {

 

       System.out.println(Math.E);//2.718281828459045

 

       int a = 12;

 

       int b = 25;

 

      

 

       System.out.println(Math.max(a,b));//这里可以使用静态导入(导入Math类中的方法,这样的话前面就不用写上Math.

 

       System.out.println(Math.min(a,b));

 

    }

 

}

 

 

 

 

 

package reviewDemo;

 

 

 

import java.util.UUID;

 

 

 

publicclass Demo27 {

 

    publicstaticvoid main(String[] args) {

 

       UUID u = UUID.randomUUID();

 

       String s = u.toString();

 

       System.out.println(s);//此时是随机生成的,肯定每次都不一样,全网唯一!

 

      

 

       u = new UUID(1222222222, 12);//根据构造方法来

 

       s = u.toString();

 

       System.out.println(s);//这一个的UUID是固定的。

 

    }

 

}

 

 5DateCalendar

 

 

 

处理日期,时间;

 

大部分的方法已过时,不推荐使用,但是你使用过时的方法也不会报错。

 

Date() 分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。

 

Date(long date)  分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 1 1 00:00:00 GMT)以来的指定毫秒数。

 

 

 

SimpleDateFormat

 

 

 

java.text.SimpleDateFormat

 

SimpleDateFormat 是一个与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

 

SimpleDateFormat(String pattern)  用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat

 

public final String format(Date date)将一个 Date 格式化为日期/时间字符串。

 

 public Date parse(String source) throws ParseException:把字符串source表示的时间按source的格式转成Date对象。

 

 

 

练习:StringDate的相互转化

 

 

 

按某种时间格式来输出指定的String类型时间

 

date2String

 

format

 

 

 

把某种时间格式的String时间转成Date类型时间

 

string2Date

 

parse

 

 

 

package reviewDemo;

 

 

 

import java.text.SimpleDateFormat;

 

import java.util.Date;

 

 

 

publicclass Demo28 {

 

    publicstaticvoid main(String[] args) throws Exception {

 

      

 

       Date d = new Date();

 

       System.out.println(d);//获取当前时间

 

      

 

       //格式化

 

       SimpleDateFormat  sd = new SimpleDateFormat("yyyy-M-d HH:mm:ss E");

 

      

 

       String s = sd.format(d);//这个方法继承于SimpleDateFormat的父类DateFormat类!

 

       System.out.println(s);

 

      

 

       //反格式化

 

       d = sd.parse(s);

 

       System.out.println(d);

 

    }

 

}

 

 

 

 

 

Calendar

 

 

 

推荐使用处理日期和时间的类Calendar;

 

是抽象类,不能实例化,通过

 

static Calendar getInstance() 获得一个Calendar对象。

 

int get(int field):返回指定日历字段值

 

静态常量:

 

YEAR 表示年的字段数字。

 

MONTH 表示月份字段数字,月份范围是[0,11]

 

DATE 表示一个月中的某天。

 

DAY_OF_MONTH 表示一个月中的某天。

 

DAY_OF_WEEK 表示一个星期中的某天。

 

HOUR_OF_DAY / HOUR 表示第几小时

 

MINUTE  表示第几分钟

 

SECOND       表示第几秒

 

 

 

Date getTime() 返回一个表示此 Calendar 时间值的 Date 对象。

 

void set(int year, int month, int date, int hour, int minute, int second)   设置字段 YEARMONTHDAY_OF_MONTHHOURMINUTE SECOND 的值。

 

abstract void add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量。

 

amount为负数,则减去一天,

 

amount为正数,则加上一天

 

 

 

 

 

例子

 

package reviewDemo;

 

 

 

import java.util.Calendar;

 

import java.util.Date;

 

 

 

publicclass Demo29 {

 

    publicstaticvoid main(String[] args) {

 

       Calendar c = Calendar.getInstance();

 

       System.out.println(c);

 

      

 

       Date d = c.getTime();

 

       System.out.println(d);

 

      

 

       /**

 

        * void set(int year, int month, int date, int hour, int minute, int second)  

 

        * 设置字段 YEARMONTHDAY_OF_MONTHHOURMINUTE SECOND 的值。

 

        */

 

      

 

       c.set(2015, 07, 15, 12, 24, 55);

 

       d = c.getTime();

 

       System.out.println(d);

 

      

 

       c.add(Calendar.DAY_OF_MONTH, 3);

 

       d = c.getTime();

 

       System.out.println(d);

 

    }

 

}

 

 

 

Eg:“查询距今最近三天内的记录”,这里的‘三天内’是什么时间段?

 

将当前日期时间转换为只获取当天的00:00:00

 

: 2011-08-08 12:12:12 转化为 2011-08-08 00:00:00

 

 

 

package reviewDemo;

 

 

 

import java.text.SimpleDateFormat;

 

import java.util.Calendar;

 

import java.util.Date;

 

 

 

publicclass Demo30 {

 

    publicstaticvoid main(String[] args) {

 

      

 

       Calendar c = Calendar.getInstance();

 

       Date d = c.getTime();

 

       System.out.println(d);

 

      

 

       SimpleDateFormat sd = new SimpleDateFormat("yyyy-M-d HH:mm:ss E");

 

      

 

       String s = sd.format(d);

 

       System.out.println(s);

 

      

 

       c.set(2015, 8, 23, 13, 24, 15);

 

       d = c.getTime();

 

       System.out.println(sd.format(d));

 

       c.add(Calendar.DAY_OF_MONTH, -3);

 

       d = c.getTime();

 

       System.out.println(sd.format(d));

 

    }

 

}

 

 

 

输出:

 

Thu Jul 04 08:56:51 CST 2013

 

2013-7-4 08:56:51 星期四

 

2015-9-23 13:24:15 星期三

 

2015-9-20 13:24:15 星期日

 

 

6System

 

 

 

System 类包含一些与系统相关的类字段和方法。它不能被实例化,类中所有属性和方法都是static,可直接被System调用。

 

 

 

常用方法:

 

static void exit(int status) 终止虚拟机的运行.对于发生了异常情况而想终止虚拟机的运行,传递一个非0数值,对于正常情况下退出系统传递0;

 

该方法实际调用的是Runtime.getRuntime().exit(int status)

 

static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 数组拷贝

 

static long currentTimeMillis() 返回以毫秒为单位的当前时间。

 

String getenv(String name)     获得指定的环境变量;

 

static void gc()  运行垃圾回收器。

 

实际上调用了 Runtime中的gc()方法;

 

Runtime.getRuntime().exec("notepad ");

 

static Properties getProperties()  取得当前的系统属性。

 

static String getProperty(String key) 取得指定键指示的系统属性。

 

static String getProperty(String key, String def)  获取用指定键描述的系统属性,def表示默认信息。

 

 

 

Egpackage reviewDemo627;

 

 

 

import java.util.Properties;

 

 

 

publicclass Demo32 {

 

    publicstaticvoid main(String[] args) {

 

       Properties p = System.getProperties();

 

       System.out.println(p);

      

      System.out.println(System.getenv());

 

    }

 

}

 

 

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics