Java(六) 基本API和字符串

这里写代码片####1Object对象
面向对象的核心思想:“找合适的对象,做适合的事情”。
合适的对象:
1.自己描述类,自己创建对象。
2.sun已经描述了好多常用的类,可以使用这些类创建对象。
API(Application Program Interface)
sun定义的那么多类的终极父类是Object。Object描述的是所有类的通用属性与方法。

public static void main(String[] args) {
        // TODO Auto-generated method stub
        Object o = new Object();
        System.out.println(o.toString());
        System.out.println(o);
    }

java.lang.Object@3cba8af9

类名@哈希码值的十六进制形式。
直接输入一个对象的时候,会调用对象的toString方法。

1 System类

系统类 主要用于获取系统的属性数据。
exit() 退出虚拟机
gc() 调用垃圾回收器程序,但是调用该方法时候并不会马上执行
finalize() 如果一个对象被垃圾回收 器回收的时候,会先调用对象的finalize()方法。

package com.thread;

public class Mythread {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
       for(int i=0;i<4;i++){
           new Person("黑喂狗" + i);
           System.gc();            //gc()    建议jvm赶快启动垃圾回收期回收垃圾。

       }
    }

}
class Person{
    String name;

    public Person(String name) {
        this.name = name;
    }

    public Person() {
        super();
        // TODO Auto-generated constructor stub
    }
    @Override
    protected void finalize() throws Throwable {
        // TODO Auto-generated method stub
        super.finalize();  //finalize()  如果一个对象被垃圾回收 器回收的时候,会先调用对象的finalize()方法。
        System.out.println(this.name+"被回收了");
    }

}
  Properties ps = System.getProperties();
  ps.list(System.out);
  String os_name = System.getProperty("os.name");
  System.out.println(os_name);
  System.out.println(System.getenv("path"));
2 String API
String(char[] value) 将字符数组转换为字符串
String(char[] value, int offset, int count)
Static String valueOf(char[] data)
static String valueOf(char[] data, int offset, int count)
char[] toCharArray()  将字符串转换为字符数组
String replace(char oldChar, char newChar) 替换
String[] split(String regex) 切割
String substring(int beginIndex) 
String substring(int beginIndex, int endIndex)截取字串
String toUpperCase() 转大写
String toLowerCase() 转小写
String trim() 去除空格
3 StringBuffer

StringBuffer : 由于String是不可变的,所以导致String对象泛滥,在频繁改变字符串对象的应用中,需要使用可变的字符串缓冲区类。
字符串特点:字符串是常量;它们的值在创建之后不能更改.

 字符串的内容一旦发生了变化,那么马上会创建一个新 的对象。

 注意: 字符串的内容不适宜频繁修改,因为一旦修改马上就会创建一个新的对象。

 如果需要频繁修改字符串 的内容,建议使用字符串缓冲 类(StringBuffer)。
特点:
1.默认缓冲区的容量是162.StringBuffer  : 线程安全的所有的缓冲区操作方法都是同步的。效率很低。
StringBuffer sb = new StringBuffer("jack");
        sb.append(true);
        sb.append('a');
        sb.append(97).append(new char[]{'a','b'});
        System.out.println(sb);
4 StringBuilder

StringBuilder 是JDK1.5之后提出的,线程不安全,但是效率要高。用法与StringBuffer类似。

5 Runtime

Runtime 类主要描述的是应用程序运行的环境
long freeMemory() 获取可用内存数
long maxMemory() 获取JVM最大内存数量

Runtime run = Runtime.getRuntime();       //获取应用运行环境对象
      System.out.println(run.freeMemory());     //获取JVM可用的内存数
      System.out.println(run.maxMemory());     // 获取JVM试图使用的内存总容量
      System.out.println(run.totalMemory());
5 Date

Date 类封装的是系统的当前时间.。但是Date已经过时了,sun推荐使用Calendar类。
Calendar: 该类是一个日历的类,封装了年月日时分秒时区。

Date date = new Date();
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH)+1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
int dayofweek = calendar.get(Calendar.DAY_OF_WEEK);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
int second= calendar.get(Calendar.SECOND);
System.out.println(date);
System.out.println(year);
System.out.println(month);
System.out.println(day);
System.out.println(dayofweek);
System.out.println(hour);
System.out.println(minute);
System.out.println(second);

SimpleDateFormat sm = new SimpleDateFormat(“yyyy年MM月dd日 E a hh时mm分ss秒”);
System.out.println(sm.format(new Date()));
输出效果
2016年06月15日 星期三 下午 11时27分09秒

6 Math类
System.out.println("绝对值"+Math.abs(-3));
System.out.println("绝对值"+Math.ceil(3.14));  //向上取整
System.out.println("绝对值"+Math.floor(-3.14));//向下取整
System.out.println("四舍五入:"+Math.round(3.54));//四舍五入
System.out.println("随机数:"+Math.random());   //产生一个随机数.大于等于 0.0 且小于 1.0 的伪随机 double 值
System.out.println("随机数:"+Math.round(Math.random()*10));   
7 Random 随机数类
char[] arr = {'中','国','传','a','Q','f','B'};
        StringBuilder sb = new StringBuilder();
        Random random = new Random();
        //需要四个随机数,通过随机数获取字符数组中的字符,
        for(int i  = 0 ; i< 4 ; i++){
            int index = random.nextInt(arr.length);  //产生的 随机数必须是数组的索引值范围之内的。
            sb.append(arr[index]);
        }
        System.out.println("验证码:"+ sb);

练习

package cn.itcsat.string;
/*
需求1:自己实现trim的方法。

需求2: 获取上传文件名  "D:\\20120512\\day12\\Demo1.java"。

需求3:    将字符串对象中存储的字符反序。    新中国好     -----> 好国中新

需求4: 求一个子串在整串中出现的次数 。 


*/
public class Demo6 {

    public static void main(String[] args) {
        String str  ="        传智        播客             ";   
        System.out.println(myTrim(str));

        str =  "D:\\20120512\\day12\\Demo1.java";
        getFileName(str);

        str = "新中国好";
        System.out.println("翻转后的字符串:"+ reverse(str));

        str = "abcjavaabcjavaphpjava";  //java
        getCount(str, "java");

    }


    //统计子串出现 的次数
    public static void getCount(String str,String target){
        int count = 0 ; //用于记录出现的次数
        int fromIndex  = 0; // 记录从那个索引值开始寻找目标子串
        while((fromIndex = str.indexOf(target, fromIndex))!=-1){
            //如果indexof方法返回 的不是-1,那么就是已经找到了目标 元素。
            count++;
            fromIndex = fromIndex+target.length();
        }
        System.out.println("出现的次数:"+ count);
    }



    public static String reverse(String str){
        char[] arr = str.toCharArray();
        for(int startIndex = 0 , endIndex=arr.length-1 ; startIndex<endIndex; startIndex++,endIndex--){
                char temp = arr[startIndex];
                arr[startIndex] = arr[endIndex];
                arr[endIndex] = temp;
        }
        //使用字符数组构建一个字符串。
        return new String(arr);
    }





    //需求2: 获取上传文件名  "D:\\20120512\\day12\\Demo1.java"。
    public static void getFileName(String path){
        int index = path.lastIndexOf("\\");
        String fileName = path.substring(index+1);
        System.out.println("文件名:"+ fileName);
    }



//  需求1:自己实现trim的方法。
    public static String myTrim(String str){
        //先转换成字符 数组
        char[] arr = str.toCharArray();
        //定义两个 变量记录开始与结束 的索引值
        int startIndex = 0 ;
        int endIndex = arr.length -1;
        //确定开始 的索引值
        while(true){
            if(arr[startIndex]==' '){
                startIndex++;
            }else{
                break;
            }
        }
        //确定结束 的索引值:
        while(true){
            if(arr[endIndex]==' '){
                endIndex--;
            }else{
                break;
            }
        }
        //截取子串返回
        return str.substring(startIndex,endIndex+1);        
    }


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值