热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java基础之常用类

一、字符串相关类1、String类:构造字符串对象常量对象:字符串常量对象是用双引号括起的字符序列。例如:Strings你好、Strings12.97、Str

一、字符串相关类

  1、String类:构造字符串对象

  常量对象:字符串常量对象是用双引号括起的字符序列。 例如:String s = "你好"、String s = "12.97"、String s = "boy"等。

  字符串的字符使用Unicode字符编码,一个字符占两个字节。 

  使用构造方法创建并初始化

    String();//初始化一个对象,表示空字符序列

    String(value);//利用已存在的字符串常量创建一个新的对象

    String (char[] value);//利用一个字符数组创建一个字符串

    String(char[] value,int offset,int count);//截取字符数组offset到count的字符创建一个非空串

    String(StringBuffer buffer);//利用StringBuffer对象初始化String对象

 

  字符串特性:

  String是一个final类,代表不可变的字符序列,字符串是不可变的。一个字符串对象一旦被配置,其内容是不可变的。

    字符串常用操作:

  1)  charAt(下标):获取字符串指定下标位置的字符,返回char值

  2)  length():返回字符串的长度,返回int值

  3)  getBytes():将字符串转换为字节数组,返回byte[]值

  4)  indexOf(子字符串):返回指定子字符串在源字符串中的下标,返回int值,没找到返回-1.(可以指定开始检索的位置下标)

  5)  lastIndexOf():返回指定子字符串在源字符串中最后一次出现的下标

  6)  isEmpty():判断字符串的length是否为0,返回Boolean值

  7)  replace(旧子字符串,新字符串):用指定的新字符串替换源字符串中的旧子字符串部分,返回替换后的字符串,返回值String

  8)  subString(开始下标,结束下标):截取从开始到结束下标范围的字符串,结果包含开始,不包含结束,如果不给结束下标,表示直接截取到末尾

  9)  split(字符串):按照指定的字符串拆分源字符串,返回String[]数组

  10) trim():用于返回去掉首尾空格的字符串

  11) valueOf(其他类型数据):将指定数据转换为字符串值返回

  12) toCharArray():返回将此字符串转换为一个新的字符数组

  13) toString():返回此对象本身

  14) toLowerCase():把字符串全部转换为小写

  15) toUpperCase():把字符串全部转换为大写

  16) startsWith(前缀):判断前缀是否相同

  17) endsWith(后缀):判断后缀是否相同

  18) compareTo():判断字符串的大小关系,参考ASSCI表

  19) compareToIgnoreCase():忽略大小写判断字符串的大小关系

  20) equals(字符串):比较字符串和指定字符串是否相等,返回boolean值

  21) equalsIgnoreCase():忽略大小写的情况下判断内容是否相同

  22) reagionMatches() :测试两个字符串区域是否相等

  23)pubic String replace(char oldChar,char newChar)

  24)public String replaceAll(String old,String new)

    字符串与基本数据的相互转换

  字符串转换为基本数据类型:

  Integer包装类的public static int parseInt(String s):可以将由“数字”字符组成的字符串转换为整型。

  类似地,使用java.lang包中的Byte、Short、Long、Float、Double类调相应的类方法可以将由“数字”字符组成的字符串,转化为相应的基本数据类型。

  基本数据类型转换为字符串:

  调用String类的public String valueOf(int n)可将int型转换为字符串。

  相应的valueOf(byte b)、valueOf(long l)、valueOf(float f)、valueOf(double d)、valueOf(boolean b)可由参数的相应类到字符串的转换。

    字符串与字符、字节数组

  字符串与字符数组

  String 类的构造方法:String(char[]) 和 String(char[],int offset,int length) 分别用字符数组中的全部字符和部分字符创建字符串对象

  String类提供了将字符串存放到数组中的方法:

  public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

  将字符串中的全部字符存放在一个字符数组中的方法:

  public char[] toCharArray()

 

  字符串与字节数组

  String(byte[])用指定的字节数组构造一个字符串对象。String(byte[],int offset,int length) 用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象。

  public byte[] getBytes() 方法使用平台默认的字符编码,将当前字符串转化为一个字节数组。

  public byte[] getBytes(String charsetName) 使用参数指定字符编码,将当前字符串转化为一个字节数组。

  2、StringBuffer类与StringBuilder类

  StringBuffer是一个容器。

  java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删。 很多方法与String相同,但StingBuffer是可变长度的。 

  StringBuffer类有三个构造方法:

  1.StringBuffer()初始容量为16的字符串缓冲区

  2.StringBuffer(int size)构造指定容量的字符串缓冲区

  3.StringBuffer(String str)将内容初始化为指定字符串内容

 

  与String的区别:

  String s = new String("我喜欢学习");//长度不可变

 

 

  StringBuffer buffer = new StringBuffer(“我喜欢学习”);//长度可变,调用append()方法,增加字符串长度

  buffer.append("数学");

 

  常用类:

  StringBuffer append(String s),

  StringBuffer append(int n) ,

  StringBuffer append(Object o) ,

  StringBuffer append(char n),

  StringBuffer append(long n),

  StringBuffer append(boolean n),

  StringBuffer insert(int index, String str)

  public StringBuffer reverse()

  StringBuffer delete(int startIndex, int endIndex)

  public char charAt(int n )

  public void setCharAt(int n ,char ch)

  StringBuffer replace( int startIndex ,int endIndex, String str)

  public int indexOf(String str)

  public String substring(int start,int end)

  public int length()

 

  StringBuilder 和 StringBuffer 非常类似,均代表可变的字符序列,而且方法也一样

  String:不可变字符序列

  StringBuffer:可变字符序列、效率低、线程安全

  StringBuilder(JDK1.5):可变字符序列、效率高、线程不安全

  String使用陷阱: string s="a"; //创建了一个字符串  s=s+"b"; //实际上原来的"a"字符串对象已经丢弃了,现在又产生了一个字符串s+"b"(也就是"ab")。如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能。

 

二、日期类

  1.java.lang.System类

  System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。

  此方法适于计算时间差。

  计算世界时间的主要标准有:

  UTC(Universal Time Coordinated)

  GMT(Greenwich Mean Time)

  CST(Central Standard Time)

  2. java.util.Date类

  表示特定的瞬间,精确到毫秒

  构造方法:

  Date( )使用Date类的无参数构造方法创建的对象可以获取本地当前时间。

  Date(long date)

  常用方法:

  getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

  toString():把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是时间标准。

  Date类的API不易于国际化,大部分被废弃了,java.text.Simp leDateFormat类是一个不与语言环境有关的方式来格式化和解析日期的具体类。

  它允许进行格式化(日期文本)、解析(文本日期)

  格式化:

  SimpleDateFormat() :默认的模式和语言环境创建对象

  public SimpleDateFormat(String pattern):该构造方法可以用参数pattern指定的格式创建一个对象,该对象调用:

  public String format(Date date):方法格式化时间对象date

  解析:

  public Date parse(String source):从给定字符串的开始解析文本,以生成一个日期。

 

  3. java.util.Calendar(日历)类

  Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能。

  获取Calendar实例的方法

  使用Calendar.getInstance()方法

  调用它的子类GregorianCalendar的构造器。

   一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、MINUTE、SECOND

  public void set(int field,int value)

  public void add(int field,int amount)

  public final Date getTime()

  public final void setTime(Date date)

package main.dyh.test_utils;

import org.junit.Test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class TestString {

    @Test
    public void fun1() {
        Date date = new Date();
        System.out.println(date);

        long l = System.currentTimeMillis();
        System.out.println(l);
    }

    @Test
    public void fun2() throws ParseException {
        Date date = new Date();

        //产生一个formater格式化的实例
        SimpleDateFormat st = new SimpleDateFormat();
        String f1 = st.format(date);
        System.out.println(f1);

        SimpleDateFormat st1 = new SimpleDateFormat("yy-MM-dd hh:mm:ss");
        String f2 = st1.format(date);
        System.out.println(f2);
    }


    @Test
    public void fun3(){
        Calendar calendar = Calendar.getInstance();

        //获取时间
        Date time = calendar.getTime();
        System.out.println(time);

        SimpleDateFormat st = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String format = st.format(time);
        System.out.println(format);

        //获取年
        int year = calendar.get(Calendar.YEAR);
        System.out.println(year);

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

        //获取日Date同DAY_OF_MONTH
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(calendar.get(Calendar.DATE));
        System.out.println(day);

        //获取时
        int hour = calendar.get(Calendar.HOUR);
        System.out.println(hour);

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

        //获取秒
        int secOnd= calendar.get(Calendar.SECOND);
        System.out.println(second);

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


    //一年后的今天
    @Test
    public void fun4(){
        Calendar calendar = Calendar.getInstance();

        // 同理换成下个月的今天calendar.add(Calendar.MONTH, 1);
        calendar.add(Calendar.YEAR, 1);

        // 获取年
        int year = calendar.get(Calendar.YEAR);
        System.out.println(year);

        // 获取月
        int mOnth= calendar.get(Calendar.MONTH) + 1;
        System.out.println(month);

        // 获取日
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(day);
    }

    // 获取任意一个月的最后一天
    @Test
    public void fun5(){
        Calendar calendar = Calendar.getInstance();

        // 假设求6月的最后一天,月份是从0到11,所以这里设置6,其实是7月
        int currentMOnth= 6;
        // 先求出7月份的第一天,实际中这里6为外部传递进来的currentMonth变量
        // 1
        calendar.set(calendar.get(Calendar.YEAR), 10, 1);//设置日期
        System.out.println(calendar.getTime());

        calendar.add(Calendar.DATE,-1);//七月一号的前一天

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

        System.out.println("6月份的最后一天为" + day + "号");
    }

    // 设置日期
    @Test
    public void fun6(){
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, 2000);
        System.out.println("现在是" + calendar.get(Calendar.YEAR) + "年");

        calendar.set(2008, 8, 8);
        // 获取年
        int year = calendar.get(Calendar.YEAR);
        System.out.println(year);

        // 获取月
        int mOnth= calendar.get(Calendar.MONTH);
        System.out.println(month);

        // 获取日
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(day);
    }
}
View Code

 

三、Math类

  java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型。

  abs 绝对值

  acos,asin,atan,cos,sin,tan 三角函数

  sqrt 平方根

  pow(double a,doble b) a的b次幂

  log 自然对数 exp e为底指数

  max(double a,double b)

  min(double a,double b)

  random() 返回0.0到1.0的随机数

  long round(double a) double型数据a转换为long型(四舍五入)

  toDegrees(double angrad) 弧度—>角度

  toRadians(double angdeg) 角度—>弧度


推荐阅读
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
author-avatar
jiuye
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有