关键知识点和补充

  • 学会自己用API 看构造器,方法,方法的参数,方法的返回值
  • 字符串在内存中是以字符数组的形式存储的
  • String是类,"aaa"这种就是类的实例,直接写存储在方法区的字符串常量池中,但是new出来的存放在堆中
  • String s = new String ("abc")   在方法区中创建了字符串字面常量(只有一份),堆中也创了一个对象,将方法区中的地址传递给堆
  • 常用的方法:
  • String s = new Srting("abc");   s.toString() 返回内容不返回地址
  • 看例题中的几种转化!!!
  •    //注意会将字符串和可变长的字符串的转化,这样可以使用对方的功能
            //将可变长的StringBuilder变为字符串
            System.out.println(sb2.toString());
            //将不可变长度的字符串变为可变长的StringBuilder 
            StringBuilder AA = new StringBuilder("ABCD");
  • * StringBuilder: 线程不安全的,相对效率高
     * StringBuffer : 线程安全的,相对效率低
  • 一般我们都用StringBuilder,因为效率高
  • StringBuilder|StringBuffer  一般默认的capacity的容量为16,超过这个长度会自动扩容,扩容的长度源码中是<<1+2
  • 对于capacity而言,"abc".capacity的长度是19,因为他是可变长的,预留了点位置给append()
  • "abc".length()打印出来的长度是3
  • 反转是reverse()
  • =======================================================================================
  • 自动装箱和自动拆箱时候  Integer in1=i; //自动装箱  Integer.valueOf(i);   int i2=in1;  //自动拆箱   in1.intValue()
  • * 1.基本数据类型与对象的包装类型的数据比较,只要值相同,无论是否new都相等,因为会发生自动拆箱
             * 2.两个new肯定不相等,因为两个地址
             * 3.Integer和new Integer肯定不相等,因为一个是在堆中
             * 4.如果两个Integer对象比较,在其范围内 -128~127之间就相等,缓冲区对象,否则返回new
  • 基本数据类型和常量池 干货:  https://blog.csdn.net/weixin_40018934/article/details/81088049
  • *     enum 定义枚举
     *     只要是枚举类都会隐式的继承自java.lang.包下的enum
     *     枚举类中的成员,都是该类的一个实例,默认修饰符为public static final
  • 枚举类的格式:enum Busy{FREE,BUSY,VERY_BUSY}  用类名.属性调用

String,Stringbuffer,StringBuilder三者区别https://blog.csdn.net/qq_37856300/article/details/84340288

常用类: 常用到的类

*     String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现
 *     "haha"-->['h','a','h','a']
 * 
 *     String    : 不可变长的字符序列
 *     StringBuilder :可变长的字符序列
 *     StringBuffer  :可变长的字符序列

基本数据类型的包装类

*     基本数据类型----> 引用数据类型
 *        byte            Byte
 *        short        Short
 *        int            Integer
 *        long            Long
 *        float        Float
 *        double        Double
 *        boolean        Boolean
 *        char            Character
 *  自动拆装箱
 *  自动装箱:从基本数据类型到引用数据类型
 *  自动拆箱:从包装类型到基本数据类型

Date 日期类

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

* 日期格式转换类 SimpleDateFormat
 *     字符串转为日期对象
 *         Date parse("字符串") 字符串转为日期对象
 *     日期对象转为字符串
 *         String format(date) 日期对 象转为字符串
 * 
 * SimpleDateFormat() 空构造  以默认格式进行转换
 * 
 * y 年
 * M 月
 * d 日
 * 
 * H 时(24小時制度)   h 12小时制度的
 * m 分
 * s 秒
 * S 毫秒
 * 
 * E 星期几

枚举类

* 枚举类: 一种事物的所有可能,所有情况
 *     enum 定义枚举
 *     只要是枚举类都会隐式的继承自java.lang.包下的enum
 *     枚举类中的成员,都是该类的一个实例,默认修饰符为public static final

例题

字符串

public class StringDemo01 {public static void main(String[] args) throws UnsupportedEncodingException {String str=new String("abc");String str2="abc";  //重新赋值System.out.println(str==str2);System.out.println(str.equals(str2));//String()String s1=new String();System.out.println(s1.toString());System.out.println(s1.length());  //字符串中的字符个数/*字符串和字节数组的相互转换*/String name="因为"; //字符串对象    "字符串字面常量值"byte[] bs=name.getBytes();  //默认utf-8字符编码格式System.out.println(Arrays.toString(bs));//String(byte[] bytes)   根据参数字节数组,构建字符串String s2=new String(bs);//String(byte[] bytes, int offset, int length) String s3=new String(bs,3,3);System.out.println(s3);/** String(byte[] bytes, int offset, int length, String charsetName) 通过使用指定的字符集解码指定的 byte 子数组,构造一个新的 String。 String(byte[] bytes, String charsetName) 通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String */bs=name.getBytes("gbk");System.out.println(Arrays.toString(bs));System.out.println(new String(bs,"gbk"));/** String(char[] value) 分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。 String(char[] value, int offset, int count) 分配一个新的 String,它包含取自字符数组参数一个子数组的字符。 */char[] ch={'s','h','s','x','t'};System.out.println(new String(ch));System.out.println(new String(ch,2,3));/**  String(String original) *  StringBuffer|StringBuilder 对象转为字符串对象String(StringBuffer buffer) String(StringBuilder builder)  */System.out.println(new String("hahahaha"));}
}
public class StringDemo02 {public static void main(String[] args) {String str="shsxtverygood";String str1="Shsxtverygood";/** *** char charAt(int index) 返回指定索引处的 char 值。 */System.out.println("charAt():"+str.charAt(3));// int codePointAt(int index)      返回指定索引处的字符(Unicode 代码点)。 System.out.println("codePointAt():"+str.codePointAt(3));System.out.println((int)'x');// int compareTo(String anotherString)  System.out.println("compareTo():"+str1.compareTo(str));System.out.println("=====================");//int compareToIgnoreCase(String str)  System.out.println("compareToIgnoreCase():"+str.compareToIgnoreCase(str1));//***String concat(String str)     将指定字符串连接到此字符串的结尾。 System.out.println("concat():"+str.concat(str1));//***boolean contains(CharSequence s)  当且仅当此字符串包含指定的 char 值序列时,返回 true。 System.out.println("contains():"+str.contains("sxt"));/**  boolean endsWith(String suffix)  测试此字符串是否以指定的后缀结束。 boolean startsWith(String prefix)   测试此字符串是否以指定的前缀开始。 */System.out.println("startsWith():"+str.startsWith("shsxt"));/**  byte[] getBytes()  *  byte[] getBytes(String charsetName) *    根据字节数组转为字符串*//** void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)   将字符从此字符串复制到目标字符数组。 */char[] ch=new char[10];str.getChars(5, 9, ch, 3);System.out.println(ch);/**  ***int indexOf(String str)    返回指定子字符串在此字符串中第一次出现处的索引。*  int indexOf(String str, int fromIndex)   */System.out.println("indexOf():"+str.indexOf("s",1));System.out.println("lastIndexOf():"+str.lastIndexOf("s"));/** ***String replace(char oldChar, char newChar)  */System.out.println("replace():"+str.replace("s","S"));System.out.println(str);/**  ***String[] split(String regex) */String str2="name=zhangsan";System.out.println(Arrays.toString(str2.split("=")));/** *** String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。 */System.out.println("substring():"+str.substring(5));/** *** String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串 */System.out.println("substring():"+str.substring(5,7));/** *** char[] toCharArray() 将此字符串转换为一个新的字符数组。 */System.out.println("toCharArray():"+Arrays.toString(str.toCharArray()));/** *** String toLowerCase()  转小写*  String toUpperCase()  转小写*/System.out.println("toUpperCase():"+str1.toUpperCase());/** *** trim() 去收尾空格*/String str3="  哈哈 ";System.out.println("trim():"+str3.trim());int i=132;System.out.println(String.valueOf(i).length());}
}
public class StringDemo03 {public static void main(String[] args) {int a=5;String s =new String(); //堆中的对象s=new String();s="abc";  //常量池String str="haha";  //1个 对象  在字符串常量池中String str2=new String("bcd"); //2个  一个堆中new 一个常量池中"bcd"String str3=new String("haha"); //1个  new的堆中}
}
/** StringBuilder: 线程不安全的,相对效率高* StringBuffer : 线程安全的,相对效率低*/
public class StringDemo04 {public static void main(String[] args) {//StringBuilder() 默认初始容量为16StringBuilder sb=new StringBuilder();//int capacity()  初始容量System.out.println(sb);System.out.println(sb.capacity());System.out.println(sb.length());//StringBuilder(CharSequence seq)StringBuilder sb2=new StringBuilder("abc"); //str.length() + 16System.out.println(sb2);System.out.println(sb2.capacity());System.out.println(sb2.length());//StringBuilder(int capacity) System.out.println(new StringBuilder(30).capacity());//append(内容) 追加StringBuilder ss=sb2.append(true);System.out.println(ss);System.out.println(sb2);System.out.println(sb2==ss);  //一个对象//StringBuilder delete(int start, int end)  ss=sb2.delete(2, 5);System.out.println(ss);System.out.println(sb2);System.out.println(sb2==ss); // StringBuilder insert(int offset, String str)  ss=sb2.insert(2,"tr");System.out.println(ss);System.out.println(sb2);System.out.println(sb2==ss);//StringBuilder reverse()  翻转ss=sb2.reverse();System.out.println(ss);System.out.println(sb2);System.out.println(sb2==ss);//注意会将字符串和可变长的字符串的转化,这样可以使用对方的功能//将可变长的StringBuilder变为字符串System.out.println(sb2.toString());//将字符串变为可变长的StringBuilder StringBuilder AA = new StringBuilder("ABCD");System.out.println(AA.capacity());//String 与  StringBuilder|StringBuffer对象System.out.println("1.String的构造器");System.out.println("1.StringBuilder的构造器");System.out.println("1.StringBuilder的toString");}
}

 包装类

public class DataDemo01 {public static void main(String[] args) {int i=10;  //基本数据类型Integer in1=i; //自动装箱  Integer.valueOf(i);System.out.println(3+in1);  //自动拆箱int i2=in1;  //自动拆箱   in1.intValue()test(1.1,2.2);}static void test(Double d1,Double d2){System.out.println(d1+d2);; }
}

 日期类:

public class DateDemo01 {public static void main(String[] args) {//Date()  当前时间Date date=new Date();//默认是Mon Oct 28 16:11:48 GMT+08:00 2019  格式的//java已经帮我们重写了tostring方法,但是这个格式真的不好看啊!可以用日期格式转换下System.out.println(date); //Date(long)  1970 年 1 月 1 日 00:00:00 GMT 以来的指定毫秒数。//如果将这个L的值改成date.getTime(),通过这个构造器的创建出来的数据和第一个的数据是完全相同的Date date2=new Date(1572250308312L);System.out.println(date2);// long getTime()  毫秒数      依据时间戳到现在的毫秒数System.out.println(date.getTime());System.out.println("==================");//设置时间也是按照时间戳来的date.setTime(15722490L);System.out.println(date);//toStringSystem.out.println("=======================");//相当于直接打印dateSystem.out.println(date.toString());System.out.println(date.toLocaleString());  //已经不用了//after,before,equals  等等 比较的是前后的关系System.out.println(date.after(date2));}
}

日期格式转换类:

public class SimpleDateFormatDemo02 {public static void main(String[] args) throws ParseException {Date date=new Date();SimpleDateFormat simple=new SimpleDateFormat();  //19-10-28 下午4:00String str=simple.format(date);Date d=simple.parse("2020-10-10 下午4:00");System.out.println(d);SimpleDateFormat simple2=new SimpleDateFormat("yyyy年MM月dd日 E hh:mm:ss SSS");System.out.println(simple2.format(date));}
}

常用类 String,Stringbuffer,Stringbuilder 包装类 日期类相关推荐

  1. 3.4 java基础总结①常用类String②Stringbuffer③Stringbuilder

    ①常用类String②正则表达式③Stringbuffer④Stringbuilder 一.String ①String内存分析 String str0 = "hello";预先放 ...

  2. 2019-7-9 [JavaSE] String ,StringBuffer,StringBuilder比较 装箱和拆箱 日期类 正则

    文章目录 1.StringBuffer类 方法: 利用StringBuffer开头与结束的时间计算: String ,StringBuffer,StringBuilder比较 2.装箱和拆箱 3.日期 ...

  3. 重温java中的String,StringBuffer,StringBuilder类

    不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...

  4. StringBuffer类,StringBuffer类和String的区别、String,StringBuffer,StringBuilder之间的区别

    1.概述 StringBuffer是一个线程安全的可变序列. 2.StringBuffer与String区别 (1)StringBuffer的长度和内容都可以发生改变,String却不行 (2)Str ...

  5. 浅谈 Java 字符串(String, StringBuffer, StringBuilder)

    我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...

  6. java中 String StringBuffer StringBuilder的区别

    * String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...

  7. String, StringBuffer,StringBuilder

    String, StringBuffer,StringBuilder的区别 java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,都实现了CharSe ...

  8. `java`学习笔记(十二)`Java`--`String``StringBuffer``StringBuilder`

    Java–String&&StringBuffer&&StringBuilder 文章目录 `Java`--`String`&&`StringBuffe ...

  9. String StringBuffer StringBuilder区别与联系

    String     StringBuffer     StringBuilder String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量 ...

  10. String StringBuffer StringBuilder的区别

    简单的事情做到极致也是一种能力. 首先,说一下目前我还没进行整理的情况下,我的理解: String 不可修改 修改后相当于又新创建创建一个字符串 比如: String a = "abc&qu ...

最新文章

  1. PostgreSQL 使用 pgbench 测试 sysbench 相关case
  2. Spring创建对象的三种方式以及创建时间
  3. sudo vi ~/etc/profile 报错E212:Can't open file for writing
  4. Flurl使用Polly实现重试Policy
  5. java基础-BigDecimal类常用方法介绍
  6. 阿里平头哥发布自研云芯片倚天710,性能超越业界标杆20%
  7. 关于取反符号的相关问题
  8. Spark on Yarn遇到的几个问题
  9. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_05 IO字符流_8_使用try_catch_finally处理流中的异常...
  10. 计算机开机太慢,为什么电脑开机很慢
  11. 过麦--回忆里面的山东
  12. 快递查询单号查询,分享简单好用查询技巧
  13. 【计算机网络】(一)走进网络
  14. 前后端分离实现图片上传的功能
  15. 已声明“##”,但从未读取其值,解决办法
  16. 仿微信打开红包旋转动画
  17. bjui框架中用icheck实现单选全选效果
  18. PyTorch 1.0 中文官方教程:空间变换器网络教程
  19. mysql数据结构面试题_MySQL面试题汇总
  20. 计算两个并联电阻的总电阻

热门文章

  1. android安卓源码海量项目合集大全打包6000套-2续
  2. 西门子,欧姆龙,施耐德PLC通信电缆制作图
  3. Unity3D button控件
  4. Java并发编程之美
  5. WebView 指南
  6. 谷歌翻译api_Deepl:一款优秀的专业翻译软件
  7. 数字电子技术基础(二):原码、反码、补码
  8. GD32F103读写内部FLASH
  9. PPC常用软件4/6(PPC播放rmvb)
  10. 【mud】金庸武侠年表-清朝以前