Java基础(四)——类与方法

	就是完成特定功能的代码块

基础格式

方法的定义:
	修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
		方法体语句;
		return 返回值;
	}
方法的调用: 方法名(参数)
修饰符:目前就用 public static。后面再详细讲解其他修饰符
	返回值类型:就是功能结果的数据类型
	方法名:就是起了一个名字,方便我们调用该方法。
	参数类型:就是参数的数据类型
	参数名:就是变量
	参数分类:
		实参:实际参与运算的数据
		形参:方法上定义的,用于接收实际参数的变量
	方法体语句:就是完成功能的代码块
	return:结束方法
	返回值:就是功能的结果,由return带给调用者。

必须明确的两点:

	返回值类型就是返回结果的数据类型
	参数列表中参数的个数及对应的数据类型

示例

//有返回值的方法
public class Test {
	//程序入口
	public static void main(String[] args) {
		int n = add(5, 7);//方法的调用
		System.out.println(n);//12
	}
	//自定义两个数的加法, 返回值类型为int,需要两个int参数
	public static int add(int x ,int y){
		return x + y;
	}
}
/**
简易程序流程:
1.方法区加载class文件
2.JVM调用main方法入栈
3.main方法执行,定义变量n,调用add(),传参
4.add方法入栈,执行add方法,返回结果,add方法弹栈
5.继续执行main方法的代码
6.main执行结束弹栈

*/

方法重载

重载:在同一个类中,方法名相同,参数列表不同,与返回值无关,与修饰符无关
参数列表不同:参数个数不同,参数类型不同,参数顺序不同
public static void main(String[] args) {
		int ret1 = add(1, 2);
		System.out.println(ret1);//3
		int ret2 = add(1, 2,3);
		System.out.println(ret2);//6
		

	}
	//计算两个数的和
	public static int add(int a , int b) {
		return a + b;
	}
	//计算三个数的和
	public static int add(int a , int b,int c) {
		return a + b + c;
	}

方法参数的传递

Java中只有值传递
基本类型:参数传递的是值,形式参数的改变不影响实际参数
引用类型:参数传递的也是值,不过这个值是复制的引用,形式参数的改变直接影响实际参数
public static void main(String[] args) {
		String c = "d";
		int [] arr = {1,2,3,4};
		add(c,arr);
		System.out.println(arr[2]); //100
		System.out.println(c);	//d
	}
	//传入字符串和数组作为参数,并修改值
	public static void add(String s,int[] arr) {
		s = "s";
		arr[2] = 100;
	}

类的定义

定义:
public class 类名{
	成员变量:
	修饰符	数据类型	变量名	= 值
	
	成员方法:
	修饰符	返回值类型	方法名(参数列表){
			局部变量:
			修饰符	数据类型	变量名	= 值
		}
}

对象的创建
类型  对象名 = new 类名()

成员变量:
		定义在类中,方法体之外的变量,
		在内存中存储在堆内存中
		随对象创建而创建,随对象的销毁而销毁
		有默认值
局部变量:
		定义在方法体中
		存储在栈内存中
		对方法的调用而创建,随着方法的结束而消亡
		没有默认值
public class Demo {
	//定义属性
	String name = "N";
	String sex = "未知";
	int age =  0;
	//定义方法
	public void out() {
		System.out.println("方法");
	}
 	
}

public class Test {

	public static void main(String[] args) {
		Demo demo = new Demo(); //创建对象
		System.out.println(demo.age);//属性调用
		demo.age = 10;//属性修改
		System.out.println(demo.age);//10
		demo.out();//方法调用

	}
	
}

ArrayList集合类的使用

	1.导入包	import java.util.ArrayList;
	2.创建集合
	3.调用结合
	集合中只能存储引用类型,对于基本类型会有装箱类型的自动转化;数组可以存储基本类型,也可以存储引用类型
	集合中可以存储不同的类型的引用,数组只能存储同一类型的元素
	集合长度可变,数组长度固定
		Demo demo = new Demo();
		Demo demo2 = new Demo();
		ArrayList a = new ArrayList();
		a.add(demo);
		a.add(demo2);
		a.add(1);
		System.out.println(a);
		//[javaee.Demo@7852e922, javaee.Demo@4e25154f, 1]
		System.out.println(a.get(2));//1
		System.out.println(a.size());//3
		//add(oniect)添加集合元素
		//get(int index)根据索引下标获取元素,下标从0开始
		//size()获取集合中元素个数

		//集合的遍历
		for(int i = 0; i < a.size(); i++) {
			System.out.println(a.get(i));
		}
		//用泛型约束集合元素为同一类型,用增强for遍历
		ArrayList<String> a = new ArrayList<String>();
		a.add("a");
		a.add("b");
		a.add("c");
		for(String string : a) {
			System.out.println(string);
		}
		//	其余方法
		a.add(3,"d"); //在指定下标出添加元素
		
		a.remove(1);//根据下标删除元素
		
		a.set(1, "f");//根据下标修改元素
		
		a.clear();//清空集合元素

ASCII编码

计算机只能识别由高低电平转换的0,1信号
为了识别文字,制定了文件符号与0,1信号的对照表ascii
十进制的97对应ASCII中的a
十进制的65对应ASCII中的A
ASCII不兼容中文

中国制作了属于自己的编码表gbk/gbk2312等等

之后出现兼容所有国家文字的万国码unicode
对相同的字符,unicode占用的资源大于其他编码,不利于传输
在unicode的基础上出现了UTF-8(常用),UTF-16
unicode是兼容ASCII
'a' + 1 //char类型与int类型相加,会去ASCII吗查询得到一个整数再与int值相加
‘怒’  //char存储中文,查询unicode吗
所以char的范围就是ASCII的范围,即0 - 65535
一般二进制数的最高位0,1表示符号位,即正数/复数
char没有符号位,全是数值,所以char不能表示负数
//输出26个大小写字母
		char c1 = 'a';
		char c2 = 'A';
		for(int i = 1;i <= 26;i++) {
			System.out.println(c1 + " " + c2);
			c1 += 1; 
			c2 += 1; 
		}

数据类型在内存中的存储位置

在类中声明的成员变量:
	对象都是存储在堆内存中
		引用类型的变量存储在堆中,值为引用对象的内存地址
		基本类型的变量存储在堆中
		随着对象的创建而产生,随着对象的销毁而销毁

在方法中声明的变量:
	方法加载后被存储到方法栈中,方法中的变量都是局部变量,随着方法的结束就会被销毁
	引用类型的变量存储在方法栈中,值为引用对象的内存地址执行堆中存在的对象内存空间
	基本类型的变量存储在方法栈中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值