大数据之JAVA基础(十):Java中常用API--1

一、object类

1.概念
object类是所有类的父类,它的所有方法子类都可以使用。所有的类在创建的时候,查找到的最终父类都是object

2.equals方法
boolean equals(object obj),用于比较两个对象是否相同,实际上比较的是两个对象的内存地址,实质上object类中的equals方法使用的就是==比较运算符(注意,两个对象,比较的是地址,而不是属性值,就好像2个人,即使都叫张三,但是不是同一个人),比较对象使用的时候,一般都要重写。重写示例如如下:
public class Person extends Object{
int age;
//重写父类的equals方法
public boolean equals(Object obj)
{
if(obj == this) //如果是同一个地址
return true;
if(!(obj instanceof Person)) //强转之前一定要判断下是否是同一类
return false;
Person p = (Person) obj;
return this.age == p.age;
}
}


3.toString()方法
String toString(); 返回该对象的字符串表示,其实就是对象类型+@+内存地址值。开发中使用地址的情况很少,所以,同equals一样,toString()一般也要进行重写;
重写示例如下:
public class Person extends Object{

int age;
String name;
//重写toString方法
public String toString()
{
return "age= " + age + ",name= " + name;
}
}


二、String 类

1.概念
在Java中,字符串是常量,一旦创建了就无法改变,字符串本身虽然不能改变,但是变量引用的是地址,所以,字符串变量是可以改变的,无非就是换一个字符串地址的引用而已

2.特殊说明
public class Ts01 {
public static void main(String[] args) {
//这种创建方式,在内存中仅有一个abc,储存在字符串常量池中
String s1 = "abc";
//这种创建方式,内存中有2个abc,一个在字符串常量池中,一个是new出来的对象在对象堆中
//记住,只要new了就会有新的对象在堆内存中产生,你可以用变量接收,也可以不接受(匿名)
String s2 = new String("abc");
//这个返回false : 因为二者地址不同
System.out.println(s1 == s2);
//这个返回true,因为String类重写了toString()方法,比较的字符串本身表示的char
System.out.println(s1.equals(s2));
}
}

3.构造方法
string类的构造方法,可以无参,可以传递实参,具体如下

//字符串的构造
String s1 = new String ();
String s2 = new String("abc");
//注意,97表示a(会转码)
byte [] bs = new byte[]{97,98,99,100};
String s3 = new String(bs);
String s4 = new String(bs,0,2);
char [] chs = new char[]{'a','b','c','d'};
String s5 = new String(chs);
String s6 = new String(chs,1,2);


4.字符串中的方法

1)

2)
String s1 = str.substring(1); //返回一个新字符串,内容为指定位置开始到字符串末尾的所有字符
String s2 = str.substring(2, 4);//返回一个新字符串,内容为指定位置开始到指定位置结束所有字符

3)
String str = "StringDemo.java";
boolean b1 = str.startsWith("Demo");//判断是否以给定字符串开头
boolean b2 = str.startsWith("String");
boolean b3 = str.endsWith("java");//判断是否以给定字符串结尾

4)
String str = "abcde";
int index = str.indexOf(“bcd”); //判断是否包含指定字符串,包含则返回第一次出现该字符串的索引,不包含则返回-1
boolean b2 = str.contains("bcd");//判断是否包含指定字符串,包含返回true,不包含返回false


5)
String str = "abcde";
char[] chs = str.toCharArray();
byte[] bytes = str.getBytes();

6)
String str = "abcde";
String str2 = "abcde";
String str3 = "hello";
boolean b1 = str.equals(str2);
boolean b2 = str.equals(str3);

7)
String str = new String("hello");
System.out.println( str.toString() );
System.out.pintln( str );

8)



5.字符串练习

1)统计字符串中大写,小写,数字的个数
/*
* 获取大写,小写,数字的个数
*/
public static void func(String str)
{
int upCount = 0; //大写
int lowCount = 0;
int numCount = 0;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if(c >= 'A' && c<= 'Z')
upCount ++;
else if(c >= 'a' && c<='z')
lowCount ++;
else if(c >='0' && c<= '9')
numCount ++;
}
System.out.println("大写字母个数:"+upCount);
System.out.println("小写字母个数:"+lowCount);
System.out.println("数字个数:"+numCount);
}

2)将一个字符串首字母大写,其余字母小写,并打印
/*
* 将一个字符串首字母大写,其余字母小写,并打印
*/
public static void func1(String str)
{
String start = str.substring(0,1);
String other = str.substring(1);
start = start.toUpperCase();
other = other.toLowerCase();
System.out.println(start + other);
}

3)“hellojava,nihaojava,javazhenbang”中查询出现“java”的次数
/*
* 查询大字符串中,出现指定小字符串的次数
*/
public static void func2(String surStr,String child)
{
int count = 0;
int index = -1;
while((index = surStr.indexOf(child)) != -1)
{
count ++;
surStr = surStr.substring(index +1);
}
System.out.println("出现了" + count + "次");
}


三、字符缓冲区StringBuffer类

1.概念
它是一个容器,容器中可以装很多的字符串。并且能够对其中的字符串进行各种操作

2.方法
/*
* StringBuffer演示
*/
public static void func3()
{
StringBuffer sbf = new StringBuffer();
sbf.append("i");
sbf.append("javahaha");
System.out.println(sbf);
sbf.insert(1, "like");
System.out.println(sbf);
sbf.delete(0,1);
System.out.println(sbf);
sbf.replace(1,3,"lala");
System.out.println(sbf);
String str = sbf.toString();
}

3.练习: int[] arr = {34,12,89,68}; 将一个 int[] 中元素转成字符串  格式 [34,12,89,68]
/*
* 打印数组
*/
public static void func4(int [] arr)
{
StringBuffer sb = new StringBuffer();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
if(i != arr.length - 1)
{
sb.append(arr[i] + ",");
}
else
{
sb.append(arr[i] + "]");
}
}
System.out.println(sb.toString());
}


四、StringBuilder类
1)它也是一个可变的字符序列。
2)此类提供一个与 StringBuffer 兼容的 API,但不保证同步。
3)该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
4)StringBuilder比StringBuffer快即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值