java常用类:包装类

包装类

 

包装类对应

  • byte Byte

  • short Short

  • int Integer

  • long Long

  • float Float

  • double Double

  • boolean Boolean

  • char Character

 

类型转换与装箱、拆箱

 //自动装箱
       int num=1;
       Integer integer=num;
       System.out.println(integer);

       //自动拆箱
       int num2=integer;
       System.out.println(num2);
  }

基本类型存放在栈中,引用类型存放在堆中,包装类就是把栈中的基本类型转换成引用类型,也就是存放到堆中

 

Integer缓冲区

缓冲区范围: -128到127

public static void main(String[] args) {
       //面试题
       Integer integer1=new Integer(100);//new出了一个新对象,存放在堆中的100,两个100在堆中的地址不同
       Integer integer2=new Integer(100);
       System.out.println(integer1==integer2);

       Integer integer3=Integer.valueOf(100);//自动装箱,调用的Integer.valueOf方法   integer3==integer4,自动装箱没显示该方法而已
       Integer integer4=100;//自动装箱,调用的Integer.valueOf方法       Integer缓冲区为-128到127,因为integer3和integer4都为100,指向到缓冲区的100,所以两者相同
       System.out.println(integer3==integer4);

       Integer integer5=200;//自动装箱,调用的Integer.valueOf方法   Integer缓冲区为-128到127,因为integer5和integer6为200,超出了缓冲区范围,看源码得知超出范围则new了一个Integer对象,所以不同
       Integer integer6=200;//自动装箱,调用的Integer.valueOf方法
       System.out.println(integer5==integer6);


  }

 

String类

  • 字符串是常量,创建之后不可改变

  • 字符在字面值存储在字符串池中,可以共享

  • String s = "hello";产生一个对象,字符串池中储存

 

String name ="hello";//hello 进入字符串池中储存着
       name = "zhangsan";  //zhangsan 赋值给name,并没有把hello修改,而是在字符串池中新开辟了一个字符串值
       String name2="zhangsan";//name2可以直接获取字符串池中的字符串,不用新开辟一个字符串

       //另一种方式创建字符串
       String str=new String("java");
       String str2=new String("java");
       //==比较地址,equals比较值,equals重写后,没重写之前也是比较地址
       System.out.println(str==str2);
       System.out.println(str.equals(str2));

 

String类常用方法

  //常用方法
       String content="java是世界上最好用的语言,java,java";
       
       //length()方法
       System.out.println(content.length());//返回字符串长度
       //charAt()方法
       System.out.println(content.charAt(content.length()-1));//返回某个位置的字符
       //contains()方法
       System.out.println(content.contains("java"));//判断是否包含某字符串,有则返回true,没有返回false
       System.out.println(content.contains("php"));
       //toCharArray()方法
       System.out.println(Arrays.toString(content.toCharArray()));//返回字符串对应的数组,重写数组的方法
       //indexOf方法
       System.out.println(content.indexOf("java"));//返回字符串首次出现的位置
       System.out.println(content.indexOf("java",16));//fromindex:从该字符串的第几个下标开始寻找
       System.out.println(content.lastIndexOf("java"));//返回字符串最后一次出现的位置
       System.out.println("---------------");


       //trim(),toUpperCase(),toLowerCase()方法
       String content2=" Hello World ";
       System.out.println(content2.trim());//去掉字符串前后的空格
       System.out.println(content2.toUpperCase());//把小写转成大写
       System.out.println(content2.toLowerCase());//把大写转成小写

       System.out.println("---------------");
       //startsWith(),endsWith()方法
       String filename="hello.java";
       System.out.println(filename.startsWith("hello"));//判断是否以什么字符串开始
       System.out.println(filename.endsWith("java"));//判断是否以什么字符串结束

       System.out.println("---------------");
       //replace()方法
       System.out.println(content.replace("java","php"));//把一个字符串中指定的某个部位替换成新的字符串
       
       //split()方法
       String say="java is the best programing language,java   good";
       String[] arr=say.split("[ ,]+");//对字符串进行拆分,”【,】“可以对 ”字符串里的 逗号,“进行拆分,在加个+“可继续拆分空格
       System.out.println(arr.length);//打印数组长度
       for (String string: arr
            ) {
           System.out.println(string);//遍历输出每一个数组

      }

       System.out.println("-----------------");
       //equals拓展
       String s1="hello";
       String s2="Hello";
       System.out.println(s1.equals(s2));//区分大小写
       System.out.println(s1.equalsIgnoreCase(s2));//不区分大小写
       
       
       //compareTo()方法
       String s3="abc";
       String s4="xyz";
       System.out.println(s3.compareTo(s4));//比较首字母的编码大小,此处为a=97减去x=120 =-23
       
       String s5="abc";
       String s6="abcd";
       System.out.println(s5.compareTo(s6));//如果两者字符串编码一致,则比较字符串长度,长度编码一致为0


  }

 

可变字符串

StringBuffer:可变长字符串,JDK1.0提供,运行效率慢、线程安全。

StringBuilder:可变长字符串,JDK5.0提供,运行效率快、线程不安全

public static void main(String[] args) {
       //StringBuffer 和   StringBuild 比String效率高,节省内存
       //以下所有方法把StringBuffer替换成StringBuild均可实现,效果一致
       StringBuffer sb=new StringBuffer();
       //append() 追加
       sb.append("java世界第一");
       System.out.println(sb);//可使用sb.toString方法,不管追加什么都使用字符串输出
       sb.append("java真香");
       System.out.println(sb.toString());
       sb.append("java真不错");
       System.out.println(sb.toString());

       //insert()添加
       sb.insert(0,"最前面");//在下标前添加
       System.out.println(sb.toString());


       //replace() 替换
       sb.replace(0,7,"hello");//从0到7,不包括7的下标替换成该字符串
       System.out.println(sb.toString());

       //delete() 删除
       sb.delete(0,5);//删除下标0开始到下标5结束,不包括5
       System.out.println(sb.toString());
       //清空sb
      // sb.delete(0,sb.length());

  }
 
posted @   ywjt  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示