java基础 day07-String中的常用方法习题,访问修饰符,构造方法,面向对象练习题(10个学生对象成绩排序)

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)+" ");			
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值