目录
1.类的方法
1.1 方法的语法结构
1.1.1 代码示例
public class Demo{
public void show(){
System.out.print("显示!");
}
}
1.1.2 解释
公有修饰符 public,很少使用其他修饰符
返回值类型 void——无返回值,也可以是其他数据类型和对象,例如int,String
方法名 show 方法名的命名规则与变量命名规则类似
() 代表方法的特殊字符,内部可以有参数,也可以没有
{} 内部写方法体,当定义有返回值时,需要保证能够return对应的值
1.2 方法的返回值
package kgc;
public class F4 {
String show = "我是方法4";
}
package kgc;
public class Demo {
public void f1() {
//1.这个方法无返回值,一般是修改全局变量或者直接输出
System.out.println("我是方法1");
}
public int f2() {
//2.这个方法返回值为基本类型int
int a = 2;
return 2;
}
public String f3() {
//3.这个方法返回值为引用类型String
String ball = "我是方法3";
return ball;
}
public F4 f4() {
//4.这个方法返回值为一个对象
F4 f4 = new F4();
return f4;
public static void main(String[] args) {
Demo demo = new Demo();
demo.f1();//方法一可以直接输出,因此直接调用就行
System.out.println("我是方法"+demo.f2();//方法二到方法三都是返回值,需要对其进行输出
System.out.println(demo.f3());
System.out.println(demo.f4().show);//方法四返回的是对象,输出该对象的属性
}
}
1.3 类的方法调用
1.3.1 类内部的方法调用
类内的的方法之间可以直接调用,或者使用main函数创建对象后调用。
package cn.kgc.test04;
public class Demo02 {
public void show1(){
System.out.println("show1");
}
public void show2(){
System.out.println("show2");
show1();
}
public static void main(String[] args) {
Demo02 demo02 = new Demo02();
demo02.show2();
}
}
1.3.2 类之间的方法调用
一般需要先创建对象,在进行调用。
package cn.kgc.test04;
public class Demo03 {
public static void main(String[] args) {
Demo02 demo02 = new Demo02();
demo02.show2();
}
}
2.成员变量和局部变量
2.1 变量的作用域
每个变量在被定义后都有其固定的作用域,作用域不一样,可以被访问的范围也就不一样,我们可能发现for循环中循环变量i在嵌套循环中无法再被使用,但在另一个循环中依然可以使用变量i,当我们在main函数中定义了i时,此时for循环不能再使用i这个变量了,这就是变量i的作用域存在区别。
2.2 成员变量和局部变量
2.2.1 定义成员变量和局部变量
在类中直接定义的变量叫做成员变量,在方法中定义的变量就是局部变量。
public class Demo{
int a;//成员变量
public void test(){
int b;//局部变量
}
}
2.2.2 成员变量与局部变量的关系
(1)作用域:成员变量的作用域在整个类;局部变量的作用域仅仅在方法或选择、循环语句的代码块中
(2)初始化:成员变量如果在被定义时没有被赋值,Java会给这个变量自动赋一个初始值;而局部变量则不会被Java自动初始化
(3)变量名:局部变量可以和同一类中的成员变量同名,且局部变量优先级更高;同一方法中不能有同名变量
public class Demo04 {
int a = 0;
public void show(){
int a = 2;
System.out.println(a);
}
public static void main(String[] args) {
Demo04 demo04 = new Demo04();
demo04.show();
}
}
注释掉局部变量后
public void show(){
// int a = 2;
System.out.println(a);
}
4.带参数的方法
4.1 定义
4.1.1 为什么方法要带参数
当方法需要使用到一些变量,而这些变量的初始值又是不固定的时候,这时候就需要设置参数,让调用处对这些变量进行初始赋值后再进行方法的调用。形象的比方例如,想象一台榨汁机的功能是榨汁机类的一个功能,那么当你使用榨汁这个功能时,需要先放入原材料,如苹果,橙子...,最后才能得到相应的苹果汁,橙汁等。我们在设置带参数的方法时也是这个道理。
4.1.2 带参数方法的构造
public class Demo1 {
public void show(String fruit,int num){
//定义的参数叫形式参数(形参)
//定义参数时和创建一个新变量是一样的
//定义多个参数时用逗号,将它们隔开
//参数的类型可以是基础类型,引用类型和自定义的类
System.out.println("榨出了"+num+"杯"+fruit+"汁");
}
public static void main(String[] args) {
Demo1 demo1 = new Demo1();
demo1.show("草莓",5);
//实际传递的值叫实际参数(实参)
//传递参数的顺序必须是方法定义的形参顺序,在IDE上一般会有提示
}
}
4.2 示例
4.2.1 示例1——数组作为参数
public class Calculation {
public double getAvg(double[] scores){
double sum = 0;
for (double i : scores) {
sum += i;
}
return sum/scores.length ;
}
public double getMax(double[] scores){
double max = scores[0];
for (int i = 1; i < scores.length; i++) {
if(max < scores[i]){
max = scores[i];
}
}
return max;
}
public static void main(String[] args) {
double[] scores = {12,35,62,3,23,4};
Calculation calculation = new Calculation();
System.out.println("最大值为:"+calculation.getMax(scores));
System.out.println("平均值为:"+calculation.getAvg(scores));
}
}
4.2.2 示例2——对象作为参数
package cn.kgc.test05;
public class Teacher {
String name;
String pwd;
}
package cn.kgc.test05;
public class Student {
String name;
String pwd;
public void add(Teacher teacher){
this.name = teacher.name;
this.pwd = teacher.pwd;
//this代表对自己的引用
}
public static void main(String[] args) {
Teacher teacher = new Teacher();
teacher.name = "张三";
teacher.pwd = "1234";
Student student = new Student();
student.add(teacher);
System.out.println("姓名:"+student.name+"密码:"+student.pwd);
}
}
5.包
5.1 包概述
包(package)用来放置类,当在一个工程中需要有同名的类时,这时后可以使用不同的包来放置这些同名类(注意跨类调用其他包同名类,会优先使用其他包的,与编译读取顺序有关);使用包可以更好的保护类和它的属性,更易于整理和维护
5.2 创建包
5.2.1 类中表明所属的包
package 包名;
一般都放在类文件首行
5.2.2 包名的命名规则
1.一般使用全小写字母
2.一般前缀为公司域名倒写
5.2.3 快速创建包
在src下创建Java Class时可以直接创建一个包内的类
5.3 导入包中的类
5.3.1 导入其他包中类的语法
在package下方,类的上方写
import 包名.类名;
5.3.2 不同的方式
(1)导入系统包中的某个类
例如 常用的Scanner
import java.util.Scanner;
java.util是包名,Scanner则是一个类
(2) 导入自定义包中的某个类
例如 在另一个包cn.kgc.test03中的类Card
import cn.kgc.test03.Card
(3)导入某路径下的包的所有类
例如导入java.util包内的所有类
import java.util.*
*表示所有类