一,变量
–1,特点
出现的位置不同,变量的名字,作用和使用范围都不一样
成员位置(类里方法外)–成员变量
局部位置(方法里)–局部变量
–2,局部变量
位置是在方法里,作用范围是在方法里,必须手动初始化
–3,成员变量
位置是在类里,作用范围是在整个类里,不用初始化
–4,测试
package cn.tedu.basic;
//测试 变量
//总结
//1,局部变量–在方法里,作用也是在方法里,必须初始化
//2,成员变量–在类里,作用是正整个类中,不用初始化也有默认值
//3,成员变量,根据类型不同,默认值也不同.
//整型是0,小数是0.0,布尔是false,char是\u0000
//4,当 局部变量名 和 成员变量名 相同时,就近原则,优先使用局部的值
public class Test1 {
//1, 成员变量,定义在类里方法外,作用范围是整个类里+都有默认值
static int age1;//整数的成员变量,默认值是0
static double age2;//小整数的成员变量,默认值是0.0
static boolean age3;//boolean的成员变量,默认值是flase
public static void main(String[] args) {
//2, 局部变量,定义在方法里,作用范围是+必须初始化
byte a = 10;
System.out.println(a);//10,使用了局部变量
System.out.println(age1);//0,使用了成员变量
//4,当局部变量名 和 成员变量名 相同时,优先使用局部变量
int age1 = 20;
System.out.println(age1);//20,就近原则
//3,由于boolean类型的默认值是false,所以取反,条件才成立
if(!age3) {
System.out.println(1);
}
}
}
二,方法
–1,概述
被命名的代码块
好处:提高代码的复用性
–2,语法
方法的修饰符 方法的返回值 方法名([参数列表]){
方法体
}
–3,方法的使用
–方法的调用
package cn.tedu.method;
//测试 方法的调用
//总结
//1,方法什么时候执行?–当被调用时
//2,方法的定义的语法?–修饰符 返回值 方法名(参数列表){}
public class Test2 {
public static void main(String[] args) {
//复制一行: ctrl alt 上/下箭头
//删除一行: ctrl d
System.out.println(1);
System.out.println(2);
hello();//调用方法
System.out.println(3);
System.out.println(4);
}
//创建hello()方法
//语法:方法的修饰符 方法的返回值 方法名(参数列表){方法体}
public static void hello() {
System.out.println(9);
System.out.println(8);
}
}
--方法的传参
package cn.tedu.method;
//测试 方法的传参
//总结:
//1, 参数列表: 是可选的,可以空着,也可以有多个,之间逗号隔开
//2, 面试题: 实参和形参的区别?
//实参:是进行方法调用时,传入的实际参数
//add3(1,2,"3")
//形参:是定义方法时,参数列表里规定的参数的类型 参数名
//add3(int a,int b,String c)
//3, 匹配关系:方法名要匹配 + 参数类型要匹配!!
public class Test3 {
public static void main(String[] args) {
//调用方法时 -- 参数不能乱写,参数的类型一定要匹配!!!
add(1);
add2(1,2);
add3(1,2,"3");
add4("3",1,2);//TODO
}
//TODO 创建add4(参数类型 参数名)
public static void add4(String a,int b,int c) {
System.out.println(a+b+c);//312
}
//TODO 创建add3(参数类型 参数名)
public static void add3(int a,int b,String c) {
System.out.println(a+b+c);//15tony
}
//TODO 创建add2(参数类型 参数名)
public static void add2(int a,int b) {
System.out.println(a+b);//15
}
//创建add(参数类型 参数名)--参数类型必须和5的类型匹配
public static void add(int a) {
System.out.println(a);
}
}
--方法的返回值
package cn.tedu.method;
//测试 方法的返回值
//总结
//1,通过return关键字,,把结果返回给调用位置
//2,方法没有返回值就写void,有返回值写啥?--要看数据的类型
public class Test4 {
public static void main(String[] args) {
//3,使用变量,接受add()返回来的结果
int res = add(1,2);
System.out.println(res*res);
String res2 = add2("tony",1,2);//TODO
System.out.println(res2);
String res3 = add3("tony");//TODO
System.out.println(res3);
}
//TODO
public static String add3(String a) {
return a+"爱Java!";
}
//TODO
public static String add2(String a,int b,int c) {
return a+b;
}
//1,如果方法需要,把结果返回,,
//方法返回值的位置,,应该写,返回的数据 的 类型
public static int add(int a,int b) {
return a+b;//2,return把结果返回给调用位置
}
}
--4,方法重载/overload
--1,概述
在一个类里的现象,方法名相同,但是 参数列表不同(个数/类型)
好处:体现了程序的灵活性...啥类型数据都可以打印
--2,练习
--求和
package cn.tedu.method;
//测试 方法重载overload
//总结:
//1,方法重载--同一个类里方法名相同,参数列表不同
//2,作用--体现了程序的灵活性--各种类型的参数都能接收
public class Test5_Overload {
public static void main(String[] args) {
//2,程序会根据参数的个数,参数的类型自动匹配 同名的add()
add("1",2,3);//匹配add(String a,int b,int c)
add(2,3);//匹配add(int a,int b)
add(1,2,"3");//匹配add(int a,int b,String c)
}
//1,提供重载的add()--同一个类里方法名相同,参数列表不同
public static void add(String a,int b,int c) {
System.out.println(2);
}
public static void add(int a,int b,String c) {
System.out.println(1);
}
public static void add(String a,int b) {
System.out.println(a);
}
public static void add(int a,int b,int c) {
System.out.println(a);
}
public static void add(int a,int b) {
System.out.println(a);
}
public static int add(int a) {
return a;
}
}
--打印
package cn.tedu.method;
//测试 重载
public class Test6_Overload {
public static void main(String[] args) {
print(10);
print(1.1);
print(true);
print('中');
print("hello");
}
//TODO
public static void print(int a) {
System.out.println(a);
}
public static void print(double a) {
System.out.println(a);
}
public static void print(boolean a) {
System.out.println(a);
}
public static void print(char a) {
System.out.println(a);
}
public static void print(String a) {
System.out.println(a);
}
}
三,数组
–1,概述
英文Array,标志[]
存储多个 相同类型的 数据
数组有下标/索引/脚标,默认是从0开始
数组一旦创建,长度不可变
–2,创建数组
–语法:数组类型[] 数组名 = new 数组类型[容量];
–动态初始化
int[] a = new int[5];
–静态初始化
int[] a = new int[]{1,2,3,4,5};
int[] a = {1,2,3,4,5};
–练习
数组中存入hello
package cn.tedu.method;
//测试 创建数组
//数组中存入hello
public class Test7_Array {
public static void main(String[] args) {
//TODO 静态初始化
char[] a = new char[]{‘h’,‘e’,‘l’,‘l’,‘o’};
char[] b = {‘h’,‘e’,‘l’,‘l’,‘o’};
System.out.println(a);
System.out.println(a.length);//获取a数组的长度
System.out.println(b.length);
//TODO 动态初始化
char[] c = new char[5];//c里都是默认值\u0000
c[0] = 'h' ;//修改,c数组里0下标存的数据
c[1] = 'e' ;//修改,c数组里1下标存的数据
c[2] = 'l' ;//修改,c数组里2下标存的数据
c[3] = 'l' ;//修改,c数组里3下标存的数据
c[4] = 'o' ;//修改,c数组里4下标存的数据
//报错,ArrayIndexOutOfBoundsException :5
//访问了不存在的下标
// c[5] = 'h' ;
//查看,c数组里0下标存的数据
// System.out.println( c[0] );
System.out.println(c);
}
}
扩展:
–预习数组的遍历 -网页版笔记的5.4
–练习:
–求数组里的奇数的个数
–求数组里的偶数的和