学习笔记补充


-------------------------String(字符串)类------------------------------------------------------------------------------------
 (1)有很多字符组成的字符序列叫做字符串.
 (2)创建字符串的对象
  A:直接给字符串对象赋值
   String s = "Hello";
  B:通过构造方法传递字节数组参数
   byte[] bys = {97,98,99,100,101};
   String s = new String(bys);
   String s = new String(bys,1,3); //从1开始,取得3个
  C:通过构造方法传递字符数组参数
   char[] chs = {'h','e','l','l','o'};
   String s = new String(chs);
   String s = new String(chs,1,3);

  面试题:
   String s1 = "haha";
   String s2 = "haha";
   sop(s1==s2);
   sop(s1.equals(s2));

   String s3 = new String("haha");
   sop(s1==s3);
   sop(s1.equals(s3));
   ==和equals什么时候使用:
   1:比较基本数据类型的时候使用 ==
   2:比较引用数据类型的时候用
     == 表示比较的是对象的地址值
     equals 没有重写Object的方法,比较的是地址值.
     重写了Object的方法,比较的是什么,根据重写来定.

 (3)字符串的功能使用
  A:判断
   **equals 判断字符串的内容是否相同,区分大小写
   **equalsIgnoreCase 判断字符串的内容是否相同,不区分大小写
   **startsWith 是否以指定的字符串开头
   **endsWith 是否以指定的字符串结尾
   **contains 判断某个字符串是否包含指定的字符串
   **isEmpty 判断字符串是否为空

   练习:模拟登录,给三次机会,并提示还有几次.

  B:获取
   **charAt 获取指定索引处的字符
   **length 获取字符串的长度
   ***注意: 数组length属性,字符串有length方法.
  *******查找*****************
   **indexOf 获取指定字符/字符串第一次出现的索引
     indexOf(char/String,fromIndex) 从指定位置开始 获取指定字符/字符串第一次出现的索引
     lastIndexOf
     lastIndexOf(char/String,formIndex)

  *******截取********
   **substring(int index) 从指定位置到末尾截取字符串.
     subString(int beginIndex,int endIndex) 从指定开始位置,到指定的末尾位置,截取字符串.
    ***注意: 左闭右开.

   练习:给定一个字符串统计,统计大写字母,小写字母,数字出现的个数.
    ***注意:不包括特殊字符
  
  C:转换
   **byte[] getBytes(String s) 把字符串转换成一个字节数组
   **char[] toCharArray(String s) 把字符串转成一个字符数组  重点
   **static String copyValueOf(char[] data)
             返回指定数组中表示该字符序列的 String。
     static String copyValueOf(char[] data, int offset, int count)
             返回指定数组中表示该字符序列的 String。
   **把基本数据类型转成字符串 次重点
    int x = 3;
    如何得到字符串呢: x+""
    现在怎么写? String.valueOf(x)
   **toUpperCase  把字符串中所有字符串转成大写
   **toLowerCase  把字符串中所有字符串转成小写
   **concat 字符串的连接

   练习:给定一个字符串,把它变成首字母大写,其他字母小写的字符串.
    ***链式编程
    ***String s = "afassfHaADSIOPFUAASFasfd";
       sop(s.substring(0,1).toUpperCase().concat(s.substring(1).toLowerCase()));
    
  D:其他
   **替换 replace(char oldChar,char newChar)
          replace(String oldString,String newString)
   **切割
          String[] split(String str)
   **去除字符串两端的空格
    String trim()
   **按照字典(自然,a-z)顺序对字符串进行比较.
    compareTo
StringBuffer:字符串的缓冲区,缓冲区主要用于存储数据
 -------添加
 StringBuffer添加元素使用的是同一个对象的区域,并且可以添加任意类型的元素。
   append(); //添加元素(可以添加任何数据类型的值)
   insert();//在指定的地方插入元素

   -----删除元素
    StringBuffer delete(int start,int end)删除指定范围内的字符串
   StringBuffer  delete(int index);删除指定位置的字符
    void setCharAt(int index,char ch); 替换指定位置的字符


 ------其他的方法
      StringBuffer replace(int start,int end,String str); 替换指定范围内的字符串
  String  substring(int start);从指定位置截取到末尾
  String substring(int start,int end );截取指定范围内的字符串
  StringBuffer reverse()反转


  StringBuffer和String的相互转换
     不能直接把一字符串对象赋值给StringBuffer对象


---------------------string到StringBuffer------------------------------------------------------
  String s="";
  //第一种方法从String变成StringBuffer
    StringBuffer sb=new StringBuffer(s);
    第二种方法
      sb.append(s);
----把 StringBuffer转成String
   StringBuffer sb=new StringBuffer();
       
    String ss=sb.toString();

面试题:三者区别?
 1:StringBuffer和StringBuilder都是可变的字符序列。
      而String一旦被赋值,内容就不可以再改变。
 2:StringBuffer是线程安全的,效率低。
    StringBuilder是线程不安全的,效率高。
   
StringBuilder就是用来替代StringBuffer。
 JDK的升级:
  A:效率
  B:安全
  C:简化书写
  
效率和安全是相对的。


---------------------包装类-------------------------------------------------------------------------

为了方便我们知道整数的最大值,进制的转换。
java就对基本数据类型都提供了对应的封装类类型
byte  Byte
short Short
int   Integer
long  Long
char  Character
boolean Boolean
float   Float

学习Integer类的构造方法
  Integer(int value):把基本数据类型的int值转换成Integer对象类型
 int x=10;
 Integer i=new Integer(x);
 System.out.println(i);
  Integer(String s):要求被转换的字符串是全部由数字字符组成的字符
        String s="10";
 Integer it=new Integer(s);
 System.out.println(s);

 NumberFormatException:抛出异常
  Integer类要掌握的方法:
  int----String类型 :把int类型的转成String类型的
    String.valueOf(int x)
    Integer.toString(int x);

   String---int类型  :把String类型的转成int类型的
   Integer.parseInt(String s);
   String --Integer--int
   Integer i=new Integer(s);
   int x=i.intValue(i);

   包装类到底是怎么包装的
     它是通过
     装箱:Integer i=100;这样,其实是把一个基本的数据类型给装箱成一对象类型
     拆箱:i+100;其实底层调用i.intValue方法,也就是拆箱动作。最后在把计算的结果300装箱成Integer类型

      拆箱其实就是i.intValue()+100;
      
  jdk5.0以后的,拆箱和装箱动作,让我们在进行计算的时候,方便了很多
  但是带来了问题,需要我们在进行计算前,判断对象是不是null.


  面试题:
 *
 * 一个字节:0 1111111
 * 有符号位的话,最大的值是127.
 *
 * 包装类里面直接赋值的时候,127以下的值会在一个常量池里。直接从常量池获取。
 */

<span style="font-size:14px;">public class IntegerTest {
	public static void main(String[] args) {
		// 定义两个Integer类型的数据
		// true,false
		Integer i1 = new Integer(128);
		Integer i2 = new Integer(128);

		// Integer类型重写了equals方法,比较的是值
		System.out.println("equals:" + i1.equals(i2)); //true;
		System.out.println("==:" + (i1 == i2));  // false  //比较对象时,==是直接比较的地址值 

		// true,false
		Integer i3 = 128;
		Integer i4 = 128;
		System.out.println("equals:" + i3.equals(i4)); //true;
		System.out.println("==:" + (i3 == i4));  //false

		System.out.println("*****************************");
		// true,false
		Integer i5 = new Integer(127);
		Integer i6 = new Integer(127);
		System.out.println("equals:" + i5.equals(i6)); //true;  是比较的两个数在常量池里面的数
		System.out.println("==:" + (i5 == i6));      //false;  是比较的两个数的地址值 

		// true,true
		Integer i7 = 127;
		Integer i8 = 127;
		System.out.println("equals:" + i7.equals(i8)); //true;
		System.out.println("==:" + (i7 == i8));  //true;
	}
}</span>


 

-------------------Math:数学运算的类---------------------------------------------------------
特点:没有构造方法,都是静态的成员
成员:
    PI
    E
 方法:
   abs:绝对值
   ceil:大于等于参数的最小整数
   floor:小于等于参数的最大整数
   max: 获取两个值中较大的值
   min:获取两个值中较小的值
   pow:获取x的y次方的值
   random:产生一个随机数,范围[0.0~1.0]
   round:四舍五入
   sqrt:平方根
   // 要掌握的属性
System.out.println("PI:" + Math.PI);
System.out.println("E:" + Math.E);

// 要掌握的功能
System.out.println("abs:" + Math.abs(-12));
System.out.println("ceil:" + Math.ceil(-12.66));
System.out.println("floor:" + Math.floor(-12.66));
System.out.println("max:" + Math.max(-12, 23));
System.out.println("min:" + Math.min(-12, 23));
System.out.println("pow:" + Math.pow(2, 5));
System.out.println("round:" + Math.round(12.567));
System.out.println("sqrt:" + Math.sqrt(16));
System.out.println("********************************");
System.out.println("random:" + Math.random());
// 我要产生一个1-100之间的数据
System.out.println("random:" + ((int) (Math.random() * 100) + 1));

 

 

                   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值