Java基础第四篇


一、方法的概述?

  • 方法:是一段具有独立功能的代码块,不调用不执行;
  • 作用:提高了代码的复用性;
  • 规则:先定义后调用;
  • 关系:方法与方法之间属于平级关系,不能嵌套;
  • 调用过程:方法在没有被调用时在方法区中.class文件中存储,当被调用时就会进入栈内存中运行,先进后出。
  • 形参:方法定义中的参数
  • 实参:方法调用中的参数

打印m-n之间的所有奇数·
public static void main(String[] args) {
	print(2,11);
}

public static void print(int m, int n) {
	for(int i = m; m <= n; i++) {
		if(i % 2 != 0) {
			System.out.println("奇数为:" + i);
		}
	}	
}

同时返回数组的最大值和最小值
/*
	只需要将最大值、最小值装入数组中,返回即可
*/
public static void main(String[] args) {
	int[] arr = {11,55,33,22,43};
	int[] maxAndMin = getMaxAndMin(arr);
}

public static int[] getMaxAndMin(int[] arr) {
	int max = arr[0];
	for(int i = 1; i < arr.length; i++) {
		if(max < arr[i]) {
			max = arr[i];
		}
	}
	int min = arr[0];
	for(int i = 1; i < arr.length; i++) {
		if(min > arr[i]) {
			min = arr[i];
		}
	}
	int[] maxAndMin = {max, min};
	return maxAndMin;
}
  • 重载:同一类中,方法名相同,参数不同
  • 参数不同:个数、顺序、类型
  • 方法参数传递 —— 基本数据类型:

基本数据类型被方法调用前后不改变数据值
public static void main(String[] args) {
	int number = 110;
	System.out.println(number);	//110
	change(number);
	System.out.println(number);	//110
}

public static void change(int number) {
	//这里的number虽然被赋值为220;但是作用域只在方法内部
	number = 220;
}
  • 方法参数传递 —— 引用数据类型

引用数据类型被方法调用前后改变数据值
public static void main(String[] args) {
	int[] arr = {10,11,12};
	System.out.println(arr[0]);	//10
	change(arr);
	System.out.println(arr[0]);	//20
}

public static void change(int[] arr) {
	/*
		这里的change方法找到第一个数字元素对象在堆内存的位置,
	并对其进行了改变,
	*/	
	arr[0] = 20;
}

二、面向对象?

  • 对象:指客观存在的事物,万物皆对象,
  • 类:对具有相同属性和行为的事物的抽象,
  • 成员变量:类中方法外,存在堆内存中,生命周期随着对象的存在而存在,有默认值。
  • 局部变量:方法中的变量,栈内存,生命周期随着方法的调用而存在,没有初始值。
  • this:本类成员引用,
  • super:父类成员引用,
  • 封装:隐藏实现细节,仅对外暴漏公共的访问方式。

三、String

  • 键盘录入字符串 nextLine() 和 next() 的区别:
    next():遇到空格,就不再录入了,结束标记:空格,tab键;nextLine():结束标记为回车换行;
  • String类常见的构造方法:
    public String()
    public String(char[] chs)
    public String(String original)

String类构造方法
public static void main(String[] args) {
	/*
		空参构造:打印的字符串对象为空白(对象内容)
	*/
	String s1 = new String();
	System.out.println(s1);	//空白

	/*
		字符数组参数:打印的是字符数组的拼接结果
	*/
	char[] chs = {'v','p','n'};
	String s2 = new String(chs);
	System.out.println(s2);	//vpn

	/*
		字符串对象参数:打印的是字符串对象的内容
	*/
	String s = "qwe";
	String s3 = new String(s);
	System.out.println(s3);	//qwe
}
  • 创建字符串对象的区别:

"==" 号比较基本数据类型的数据值,引用数据类型的地址值
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);	//true
char[] chs = {'v','p','n'};
String s3 = new String(chs);
String s4 = new String(chs);
System.out.println(s3 == s4);	//false

当使用双引号创建字符串对象时,系统会检测字符串常量池中是否有该字符串,有则复用,无则创建。
使用双引号创建对象的比较
当使用 new 创建字符串对象时,每一次 new 都会申请一个新的内存空间,虽然内容相同但是址值指向不同。
使用new创建字符串对象的比较

  • String对象的比较一般使用 equals() 方法比较值,

String类equals()方法的比较
public static void main(String[] args) {
	String username = "admin";
	String password = "123";
	Scanner sc = new Scanner(System.in);
	for(int i = i; i <= 3; i++) {
		System.out.println("请输入用户名");
		String s1 = sc.nextLine();
		System.out.println("请输入密码");
		String s2 = sc.nextLine();
		if(username.equals(s1) && password.equals(s2)) {
			System.out.println("登录成功");
			breakl
		} else {
			System.out.println("登录失败");
		}
	}
}
  • String字符串遍历

字符串遍历通过调用 charAt(int index) 或者 toCharArray() 两种方法实现
public static void main(String[] args) {

	private static Scanner sc = new Scanner(System.in);
	// public char charAt(int index)
	get01();
	// public char[] toCharArray()
	get02();
}

public static void get01(){
	System.out.println("请输入一个字符串:");
	String s1 = sc.nextLine();
	for(int i = 0; i < s1.length(); i++) {
		char c1 = s1.charAt(i);
		System.out.println(c1);
	}
}

public static void get02(){
	System.out.println("请输入一个字符串:");
	String s2 = sc.nextLine();
	char[] chars = s2.toCharArray();
	for(int i = 0; i < chars.length; i++) {
		System.out.println(chars[i]);
	}
}

四、String Builder

  • 概述:String Builder是一个可变的字符序列
  • 作用:提高字符串的操作效率
  • 构造:StringBuilder() 和 StringBuilder(String str)
  • 成员方法:
    public StringBuilder append(任意类型) 添加
    public StringBuilder reverse() 反转
    public int length()
    public String toString()

StringBuilder 提高字符串拼接效率的原理

字符串拼接原理

五、集合

  • 构造方法:ArrayList() 构造一个初始容量为10 的空列表
  • 成员方法:
    boolean add(E e) 将指定的元素添加到此列表的尾部
    void add(int index, E element) 添加到指定位置
    public boolean remove(Object o)
    public E remove(int index)
    public E set(int index, E element)
    public E get(int index)
    public int size()

字符串集合遍历
public static void main(String[] args) {
	ArrayList<String> list = new ArrayList<>();
	list.add("abc");
	list.add("efg");
	list.add("hij");

	for(int i = 0; i < list.size(); i++) {
		String s = list.get(i);
		System.out.println(s);
	}
}

集合删除元素,当集合中有元素被删除时,元素索引会重写排列
public static void main(String[] args) {
	ArrayList<String> list = new ArrayList<>();
	list.add("a");
	list.add("b");
	list.add("c");
	list.add("a");
	list.add("b");
	list.add("a");
	for(int i = 0; i < list.size(); i++) {
		String s = list.get(i);
		if(s.equals("a")) {
			list.remove(i);
			i--;
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值