String中的常用方法习题
1、统计字符串oaoaoaooaoiinsihsjbaijhoa中oa的数量
参考别人的:
public static void main(String[] args) {
String str = "oaooa";
String[] str1 = (str+"c").split("oa");// 如果最后一组元素为oa,那么再最后添加一个非oa元素,增加分割出来的数量
int count = str1.length - 1;// oa数量比分割出来的次数少1
System.out.println(count);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String strings = "oaaoa";
//讲字符串中的oa用A来替换
String str = strings.replace("oa", "A");
//两串字符的差即为oa的个数
System.out.println(strings.length()-str.length());
}
** 自己写的:**
public static void main(String[] args) {
String string = "oaaoa";
String[] string1 = string.split("");
int count = 0;
for (int i = 0; i < string1.length; i++) {
if ((string1[i].equals("o")) && (string1[i + 1].equals("a"))) {
count++;
}
}
System.out.println(count);
}
tips:
1、注意==和equals的区别,判断字符串要用equals。
2、可以直接调用charAt方法,不用分割字符串
public static void main(String[] args) {
String string = "oaooa";
int count = 0;
for (int i = 0; i < string.length(); i++) {
if (string.charAt(i) == 'o' &&string.charAt(i+1)== 'a') {
count++;
}
}
System.out.println(count);
}
摁住Ctrl键鼠标点击某个类名字,会跳转到该类如String
访问修饰符:是添加到类、结构或成员声明的关键字
以下内容来自Neat帆
Public:公有的,是类型和类型成员的访问修饰符。对其访问没有限制
Internal:内部的,是类型和类型成员的访问修饰符。同一个程序集中的所有类都可以访问
Private:私有的,是一个成员访问修饰符。只有在声明它们的类和结构中才可以访问。
Protected:受保护的,是一个成员访问修饰符。只能在它的类和它的派生类中访问。
构造方法
- 以下内容来自王俊凯夫人和li_jeremy
- 构造方法作用:对对象进行初始化
- 原则:构造函数名必须与其类名称相同,构造函数必须没有显式返回类型
- 类型:默认构造函数(无参数构造函数),参数化构造函数
- 构造函数与普通函数的区别
- 一般函数是用于定义对象应该具备的功能。而构造函数定义的是,对象在调用功能之前,在建立时,应该具备的一些内容。也就是对象的初始化内容。
- 构造函数是在对象建立时由jvm调用, 给对象初始化。一般函数是对象建立后,当对象调用该功能时才会执行。
- 普通函数可以使用对象多次调用,构造函数就在创建对象时调用。
- 构造函数的函数名要与类名一样,而普通的函数只要符合标识符的命名规则即可。
- 构造函数没有返回值类型。
- 构造函数要注意的细节
- 当类中没有定义构造函数时,系统会指定给该类加上一个空参数的构造函数。这个是类中默认的构造函数。当类中如果自定义了构造函数,这时默认的构造函数就没有了。备注:可以通过javap命令验证。
- 在一个类中可以定义多个构造函数,以进行不同的初始化。多个构造函数存在于类中,是以重载的形式体现的。因为构造函数的名称都相同。
- 构造代码块:为解决代码重复的问题
- 构造代码块作用:给所有的对象进行统一的初始化。
- 给对象进行初始化。对象一建立就运行并且优先于构造函数。
- 与构造函数区别
- 构造代码块和构造函数的区别,构造代码块是给所有对象进行统一初始化, 构造函数给对应的对象初始化。
- 构造代码块的作用:它的作用就是将所有构造方法中公共的信息进行抽取。
class Boy {
String name;
int age;
String gender;
// 构造代码块,给所有对象进行初始化。
{
System.out.println("哭。。。");
}
Boy() {
System.out.println("无参构造");
}
Boy(String n, int a, String g) {
name = n;
age = a;
gender = g;
System.out.println("有参构造");
}
void run() {
System.out.println("跑...");
}
}
class Demo9 {
public static void main(String[] args) {
System.out.println();
Boy b = new Boy();
Boy b2 = new Boy("jack", 1, "男");
}
}
java面向对象题目
使用面向对象的思想,创建有10个学生对象,每个学生有不同的名字和性别、考试成绩。给这10个学生随机的考试成绩。
题目1:统计这10个学生的平均分,男生的平均分,女生的平均分。
题目2:按照考试成绩,对这个10个学生进行排序
Student类
public class Student {
private String nameString;
private String sexString;
private int grade;
public Student() {
}
public Student(String nameString, String sexString, int grade) {
this.nameString = nameString;
this.sexString = sexString;
this.grade = grade;
}
public String getNameString() {
return nameString;
}
public void setNameString(String nameString) {
this.nameString = nameString;
}
public String getSexString() {
return sexString;
}
public void setSexString(String sexString) {
this.sexString = sexString;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public String toString(){
return "姓名为:"+this.nameString+" 性别为:"+this.sexString+" 成绩为:"+this.grade;
}
}
StudentTest类
import java.util.Arrays;
import java.util.Random;
public class StudentTest {
public static void main(String[] args) {
/*创建有10个学生对象, 每个学生有不同的名字和性别、考试成绩。
* 给这10个学生随机的考试成绩。
*/
int boygrade = 0;
int girlgrade = 0;
int sumgrade = 0;
float avg = 0;
int[] randgrade = new int [10];
for (int i = 0;i<10;i++) {
//性别随机
int ransex = new Random().nextInt(2) + 1;
String sexString;
if(ransex == 1) {
sexString = "男";
}else {
sexString = "女";
}
//成绩随机
int rangrade = new Random().nextInt(101);
//姓名随机
String familyName = "赵钱孙李周吴郑王冯";
String Name = "昌成康星光天枝思";
String str1 = "";
String str2 = "";
int len1 = familyName.length();
int len2 = Name.length();
int index1 = new Random().nextInt(len1);
int index2 = new Random().nextInt(len2);
str1 = String.valueOf(familyName.charAt(index1));
str2 = String.valueOf(Name.charAt(index2));
Student student = new Student(str1+str2,sexString,rangrade);
randgrade[i] += rangrade;
if(sexString == "男") {
boygrade+=rangrade;
sumgrade+=rangrade;
}else {
girlgrade+= rangrade;
sumgrade+=rangrade;
}
System.out.println(student);
System.out.println();
}
//题目1:统计这10个学生的平均分,男生的平均分,女生的平均分。
avg = sumgrade/20;
System.out.println("女生的平均成绩为:"+ girlgrade);
System.out.println("男生的平均成绩为:"+boygrade);
System.out.println("学生平均成绩为:"+sumgrade);
//题目2:按照考试成绩,对这个10个学生进行排序
//冒泡排序
for(int i =0;i< randgrade.length - 1;i++) {
for(int j = 0;j<randgrade.length-1-i;j++ ) {
if(randgrade[j] < randgrade[j + 1]) {
//交换成绩
int temp = randgrade[j];
randgrade[j] = randgrade[j+1];
randgrade[j+1] = temp;
}
}
}
System.out.print("按照成绩从高到低排序为:"+Arrays.toString(randgrade)+" ");
}
}