java-类与对象 String StringBuffer

    xiaoxiao2021-04-14  83

    引言 慢慢的了解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

    转载请注明原文地址: https://ju.6miu.com/read-670753.html

    最新回复(0)