java-类与对象 String StringBuffer

来源:互联网 发布:淘宝9.9包邮网站 编辑:程序博客网 时间:2024/06/07 01:33

引言
慢慢的了解java,熟悉java,也就接触到了很多java的要点,java的思想是面向对象的,所以,下面主要整理了有关java中类与对象的有关知识。
类与对象
类与对象
类:是一组相关的属性和行为的抽象
对象:是该类事物的具体体现。(实例)
比如:
类:学生
对象:张三
类的定义:类是用来描述现实世界事物的。
事物:
属性 特征
行为 功能
类:
成员变量 特征
成员方法 功能
类的组成:
成员变量 类中方法外的变量
成员方法 没有static修饰的方法
可以写一个需求对类进行理解,以及在定义一个类时它的成员变量和成员方法的内存分配:
用Java语言体现学生类。以及测试类

package com.stu_02;//学生类public class Student {    String name;    int age;    String sex;    public void eat(){        System.out.println("每个学生都要吃饭!!!");    }   public void sleep(){       System.out.println("每个学生都必须睡觉!");   }}
package com.stu_02;//测试类public class Test {    public static void main(String[] args) {        Student s=new Student();        s.age=18;        s.name="小王";        s.sex="男";        System.out.println(s.age);        System.out.println(s.name);        System.out.println(s.sex);        s.eat();        s.sleep();    }}

在main方法中定义了一个学生时,它就会有相应的内存分配,学生引用是在栈内存中存在,而学生对象的实例化则是在堆内存中,与此同时,成员变量也会在堆内存中被赋值,而成员方法在被创建时是存在于方法区中的字节码文件区的,被调用时方法出现在栈内存中,即入栈,方法调用结束后在栈内存中消失,其过程如下图所示:
这里写图片描述
还要说明一点:
成员变量和局部变量的区别?
A:在类中的位置不同
成员变量 类中方法外
局部变量 方法内或者方法声明上
B:在内存中的位置不同
成员变量 堆内存
局部变量 栈内存
C:生命周期不同
成员变量 随着对象的存在而存在,随着对象的消失而消失
局部变量 随着方法的调用而存在,随着方法的调用完毕而消失
D:初始化值
成员变量 有默认初始化值
局部变量 没有默认初始化值
最后,有一个在定义类的过程中的形式参数的问题:
数据类型:
基本类型:4类8种。byte,short,int,long,float,double,char,boolean
基本类型实际参数传递的时候传递的是这个基本类型的具体的值
引用类型:类,接口,数组
引用类型进行参数传递的时候,传递的是该引用类型的(实例对象)说白了就是这个对象的地址值
一个完整的类
在学习了有关类与对象的定义后,那么一个完整的类应该包括什么呢?首先,私有化的成员变量,接下来是setXxx()和getXxx()方法,然后是类的有参构造和无参构造,最后可以加上类的相关的成员方法。
常用类的方法总结
String类 char[] chs = {‘a’,’b’,’c’};
(1) 是由多个字符组成的一串数据。(字符序列)
其实字符串可以看成是一个字符数组。
(2)构造方法:
public String():无参构造方法
public String(byte[] bytes):把字节数组转换为字符串
public String(char[] value):把字符数组转换为字符串
public String(char[] value,int offset,int count):把字符数组的一部分转换为字符串
public String(String original):把一个字符串转换为字符串
(3)String类的成员方法
A:判断功能
boolean equals(Object obj):比较两个字符串的内容是否相同,严格区分大小写。(用户名,密码)
boolean equalsIgnoreCase(String str):比较两个字符串的内容是否相同,忽略大小写。(验证码)
boolean contains(String str):判断字符串中是否包含一个子串。
boolean startsWith(String str):判断是否以指定的字符串开头
boolean endsWith(String str):判断是否以指定的字符串结尾
boolean isEmpty():判断字符串的内容是否为空
问题:内容为空和对象为空是一个意思吗?
答:不是
B:获取功能
String类的获取功能:
int length():返回字符串的长度。其实就是字符的个数。
char charAt(int index):返回字符串中指定索引处的字符。
int indexOf(int ch):返回指定的字符在字符串中第一次出现的索引。
明明说的是字符,为什么是int呢?
原因是int类型还可以接收char类型。
97,’a’是一样的效果。
但是如果参数是char类型,你就不能写97了。
int indexOf(String str):返回指定的字符串在字符串中第一次出现的索引。
String substring(int start):截取从start开始到末尾的字符串。
String substring(int start,int end):截取从start开始到end结束的字符串。
C:转换功能
byte[] getBytes():把字符串转换为字节数组
char[] toCharArray():把字符串转换为字符数组
static String valueOf(char[] chs):把字符数组转换为字符串
static String valueOf(int i):把int类型的数据转换为字符串
valueOf():可以把任意类型的数据转换为字符串。
String toLowerCase():把字符串转成小写
String toUpperCase():把字符串转成大写
String concat(String str):拼接字符串,前面我们使用过+进行字符串的拼接,不够专业。
D:其他功能
A:替换功能
String replace(char old,char new)
String replace(String old,String new)
B:去除字符串两端空格
String trim()
StringBuffer
StringBuffer:
线程安全的可变字符序列。
String和StringBuffer的区别?
A:String的内容不可变
B:StringBuffer的内容可变
构造方法:
StringBuffer():构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
StringBuffer(int capacity):构造一个其中不带字符的字符串缓冲区,其初始容量为 capacity个字符。
StringBuffer(String str):构造一个其中带字符的字符串缓冲区,其初始容量为??? 个字符。
成员方法:
public int length():返回长度(字符数)。实际值
public int capacity():返回当前容量。 理论值
添加功能:添加元素,并返回本身的对象。
A:public StringBuffer append(String str):追加数据,在末尾添加
B:public StringBuffer insert(int offset,String str):插入数据,在指定位置添加
删除功能:
public StringBuffer deleteCharAt(int index):删除指定索引处的字符
public StringBuffer delete(int start,int end):删除从start开始到end结束的数据,包左不包右
替换功能:
public StringBuffer replace(int start,int end,String str):用str替换从start到end的数据

反转功能:
public StringBuffer reverse()
截取功能:返回值类型是String类型,本身没有发生改变
public String substring(int start)
public String substring(int start,int end)
相互转换:
String – StringBuffer
String s = “hello”;
// 方式1
StringBuffer sb1 = new StringBuffer(s);
// 方式2
StringBuffer sb2 = new StringBuffer();
sb2.append(s);
StringBuffer – String
StringBuffer sb = new StringBuffer(“world”);
//方式1
String s1 = sb.substring(0);
//方式2
String s2 = sb.toString();
//方式3
String s3 = new String(sb);
写一个简单的需求:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)

package com.stu_04;import java.util.Scanner;//统计一个字符串中大写字母字符,小写字母字符,//数字字符出现的次数。(不考虑其他字符)public class Stu06 {    public static void main(String[] args) {        Scanner sc=new Scanner(System.in);        System.out.println("请输入字符串:");        String s=sc.next();        char[] ch=s.toCharArray();        int a=0;        int b=0;        int c=0;        for(int i=0;i<ch.length;i++){            if(ch[i]>='a'&&ch[i]<='z'){                a++;            }else if(ch[i]>='A'&&ch[i]<='Z'){                b++;            }else if(ch[i]>='0'&&ch[i]<='9'){                c++;            }        }        System.out.println(a+","+b+","+c);    }}

编译运行后的结果:
请输入字符串:
DJAJHFsjfyei468472
6,6,6

0 0
原创粉丝点击