Javaの语言基础【五】

目录:
1、常用类
--1.1. Object类
--1.2.System类
--1.3.Runtime类
--1.4.Calendar日历
--1.5.Date类
--1.6.Math
--1.7.String
--1.8.StringBuffer
--1.9.基础类型对象包装类
2、正则表达式


进击的小仙

1.常用类

1.1、Object类

Object是所有对象的直接或者间接父类,也就是上帝啦!该类中定义的肯定是所有对象都具备的功能。
Object类中提供了两个对象是否相同的比较方法
如果自定义类中也有比较相同的功能,没必要重新定义啦,只要沿袭父类中的功能,建立自己持有的比较功能即可,这就是覆盖

equals 比较的是内存地址
== 比什么是什么

1.2、System类

该类存放了很多系统级的属性和方法。
他的构造方法被private修饰,无法创建System的对象,内部提供的方法被静态修饰,可通过类名调用。

  • 成员变量
    包括in、out、err三个变量
    in :标准输入流(键盘)
    out :标准输出流(显示器)
    err :标准错误输出流(显示器)
System.out.println("Lisa niu hong hong");
  • 成员方法
    1、long currentTimeMillis();返回当前计算机时间
    2、void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);数组拷贝,原生方法,性能上比循环高效
    3、void exit (int status) ; 退出程序 ,status = 0 表示正常退出,非0表示异常退出
    4、void gc () ; 请求系统进行垃圾回收
    5、String getProperty (String key) ; 获得系统中属性名为key的属性对应的值。
    —— key的取值:
    属性名 :java.version :Java运行时环境版本
    属性名 :java.home :Java安装目录
    属性名 :os.name :操作系统的名称
    属性名 :os.version :操作系统的版本
    属性名 :user.name :用户的账户名称
    属性名 :user.home :用户的主目录
    属性名 :user.dir :用户的当前工作目录
int[] a = {1,2,3,4};
int[] b = new int[5];
System.arraycopy(a,1,b,3,2);

       b = { 0 , 0 , 0 , 2 , 3 }

String osName = System.getProperty(“os.name”);
String user = System.getProperty(“user.name”);
System.out.println(“当前操作系统是:” + osName);
System.out.println(“当前用户是:” + user);

1.3、Runtime类

Runtime代表java程序的运行时环境
对象的获取方法:Runtime runtime = Runtime.getRuntime();

  • 获取当前JVM的内存信息
  • 获取JVM可用的处理器核心的数量
  • 执行系统命令
/*
 * 获取当前jvm的内存信息,返回的值是 字节为单位
 * */
public static void getFreeMemory() {
    //获取可用内存
    long value = Runtime.getRuntime().freeMemory();
    System.out.println("可用内存为:"+value/1024/1024+"mb");
    //获取jvm的总数量,该值会不断的变化
    long  totalMemory = Runtime.getRuntime().totalMemory();
    System.out.println("全部内存为:"+totalMemory/1024/1024+"mb");
    //获取jvm 可以最大使用的内存数量,如果没有被限制 返回 Long.MAX_VALUE;
    long maxMemory = Runtime.getRuntime().maxMemory();
    System.out.println("可用最大内存为:"+maxMemory/1024/1024+"mb");
}
/*
 * 获取jvm可用的处理器核心的数量
 * */
public static void getAvailableProcessors() {
    int value = Runtime.getRuntime().availableProcessors();
    System.out.println(value);
}
    public static void commend() {
        try {
            Runtime runtime = Runtime.getRuntime();
            Process process = runtime.exec("calc");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

参考资料:Java-Runtime 类

1.4、Calendar日历

专门操作日期的类。
对象的获取方法: Calendar calendar = Calendar.getInstance() ;
上面获取到的对象其实是Calendar的子类,是根据不同的国家地区返回的日期子类。

public void getCalendar() {
        // 获取年
        int year = calendar.get(Calendar.YEAR);

        // 获取月,这里需要需要月份的范围为0~11,因此获取月份的时候需要+1才是当前月份值
        int month = calendar.get(Calendar.MONTH) + 1;

        // 获取日
        int day = calendar.get(Calendar.DAY_OF_MONTH);

        // 获取时
        int hour = calendar.get(Calendar.HOUR);
        // int hour = calendar.get(Calendar.HOUR_OF_DAY); // 24小时表示

        // 获取分
        int minute = calendar.get(Calendar.MINUTE);

        // 获取秒
        int second = calendar.get(Calendar.SECOND);

        // 星期,英语国家星期从星期日开始计算
        int weekday = calendar.get(Calendar.DAY_OF_WEEK);

        System.out.println("现在是" + year + "年" + month + "月" + day + "日" + hour
                + "时" + minute + "分" + second + "秒" + "星期" + weekday);
    }

1.5、Date

表示特定的瞬间,精确到毫秒
对象的获取方法:

  • Date date = new Date () ;
  • Date date = new Date ( long date ):毫秒值转日期

获取毫秒值(日期转毫秒值):

  • long date = date.getTime ()

设置毫秒值:

  • date.setTime( long time);

对比时间:

  • date.before (Date when);当且仅当date表示的瞬间早于when表示的瞬间时返回true.

比较时间:

  • date.compareTo( Date when); 当date的瞬间早于when,返回负数;相等返回0;晚于when,返回正数。

1.6、Math

该类实现了基本的数学运算,如初等指数、对数、平方根、三角函数 。
ceil() :返回大于指定数据的最小整数
floor() :返回小于指定数据的最大整数
round():四舍五入
random():获取伪随机数(大于0.0且小于1.0的double值)

1.7、String

String类被final修饰,不能被继承。

  • 获取
    length() 获取长度
    charAt(index) 获取该处字符
    indexOf(char) 获取字符所在位置
    indexOf(char,fromIndex ) 从某位置开始获取字符位置
    indexOf(str)
    indexOf(str,fromIndex)
  • 判断
    contain(str)
    isEmpty()
    startsWith(str)
    endsWith(str)
    equals(str)
    equalsIngoreCase(str)
  • 转换
    toString(char[]) ; toString(char[] , offset , count) :字符数组 转 字符串
    toCharArray():字符串转数组
    toString(byte[])toString(byte[],offset,count):字节数组 转 字符串
    getBytes() :字符串 转 字节数组
    valueOf(int / double) : 字符串 转 基本数据类型
  • 替换
    replace(oldChar , newChar):替换
  • 切割
    split(regex)
  • 子串
    subString(begin)
    subString(begin,end)
  • 转换、取出空格、比较
    toUpperCase()
    toLowerCase()
    trim()
    compareTo(str)

1.8、StringBuffer

对象获取方法:StringBuffer sb = new StringBuffer( "abc" );
String获取对象 :String str = "abc" ;

  • 存储
    append()
    insert(index , 数据)
  • 删除
    delete(start ,end )
    deleteCharAt(index)
  • 获取
    charAt(index) 在此位置上的字符
    indexOf(str)
    lastIndexOf(str)
    length
    subString(start , end)
  • 修改
    replace(start ,end , str)
    setCharAt(index , char)
  • 反转
    reverse()
  • 存储指定数据到指定字符数组
    getChars(srcBegin , srcEnd ,Dst[] , dstBegin )

StringBuffer与StringBuilder对比来说,StringBuilder是线程不同步,不安全但效率高

1.9、基础类型对象包装类

byte -> Byte类
功能:与字符串之间的相互转换

  • 基本数据类型转换成字符串
    Integer.toString(34);
  • 字符串转基本数据类型
    int a = Integer.parseInt("123");
  • 进制转换
    toBinaryString(); :转二进制
    toHexString();:转十六进制
    toOctalString();:转十进制

2.正则表达式

正则表达式在线测试
正则表达式定义了字符串的模式,可以用来搜索、编辑和处理文本。描述在查找文字主体时待匹配的一个或多个字符串。将某个字符模式与所搜索的字符串进行匹配。

  • 组成:
    正则表达式由普通的字符(如字符a到z)以及特殊字符(如!、$等)组成的文字模式。

2.1、正则表达式的语法

  • 字符的取值范围 []
    [abc] :表示字符是a或b或c
    [^abc]:表示字符不能有a、b、c
    [a-zA-Z]:表示字符是字母
    [0-9]:表示字符是数字

  • 数量表达式
    . :匹配任意的字符
    \d :匹配数字
    \D :匹配非数字
    \s :匹配由空字符组成
    \S :匹配由非空字符组成
    \w :匹配由数字、字母、下划线组成
    \W :匹配由非数字、非字母、非下划线组成

  • 逻辑表达式
    ?:表示出现0次或1次
    +:表示出现1次或多次
    *:表示出现0次、1次或多次
    {n}:表示出现n次
    {n,m}:表示出现n-m次
    {n,}:表示出现n次或n次以上

  • 逻辑表达式
    XY:表示X后面跟着Y,X和Y都是正则表达式的一部分
    X|Y:表示X或Y
    (X):子表达式,X是一个整体

// 注意:
cup|t 表示cut或cup
(cup)|t 表示cup或t

2.2、匹配类:Pattern类 和Matcher

Pattern类和Matcher类是java提供来支持正则表达式的操作类。

  • Pattern类:切割字符串、给Matcher类创建实例对象。
    创建对象:Pattern p = Pattern.compile("a*b");
    切割:String[] split(CharSequence input)
  • Matcher类:验证和替换字符串
    创建对象:Pattern p = Pattern.compile("a|b");
    Matcher m = p.matcher("aabbc")
    匹配:boolean matches();
    替换:String replaceAll( newStr);

2.3、String类的匹配方法

在2.2节中说到的两个匹配类在实际开发中用的比较少,多数是直接用String类来实现的。

  • 验证 :boolean matches(String regex);
  • 拆分 :String[] split(String regex);
  • 替换 :String replace(String regex,String replacement);

参考资料:Java正则表达式的语法与示例

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容

  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 3,051评论 0 7
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,172评论 1 44
  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,373评论 0 4
  • 感恩朋友的关心,关注我的情绪。感恩朋友妈妈的信任,向我表达她的内心真实感受。感恩客户帮我联系相关服务信息。感恩客户...
    我不叫许仲斌阅读 109评论 0 0
  • 最近周边的庄子上发生了一件事,一家人正在读初三的女儿走丢了。故事发生的起点是在县上的初中,也许是因为与老师在年值青...
    23齿轮阅读 502评论 0 0