方法
-
简单的方法
-
方法的好处
- 提高代码的复用性
-
方法的概述:
- 方法是实现特定功能的代码块
- 一段具有独立功能的代码块,需要先定义才能调用
- 如果没有调用,方法不会自动运行
-
方法定义格式:
-
public static void 方法名(){ 方法体 }
-
-
方法调用格式:
-
方法名();
-
方法与方法之间的关系:
平级关系,所以不能嵌套定义
package ithema.day01;
public class Demo01 {
public static void main(String[] args) {
//调用方法
eat();
//调用方法
study();
}
//定义方法
public static void study(){
System.out.println("学生在敲代码");
}
//定义方法
public static void eat(){
System.out.println("学生在吃饭");
}
}
练习1
package ithema.day01;
/*
* 案例:方法练习(输出最大值)
* 定义方法,方法中定义两个变量,判断较大值并比较
* 调用方法查看结果
*
* */
public class Demo02 {
public static void main(String[] args) {
getMax();
}
public static void getMax(){
int a=10;
int b=20;
if(a>b){
System.out.println("max:"+a);
}else if(b>a){
System.out.println("max:"+b);
}else{
System.out.println("相等");
}
}
}
-
含参数的方法
package ithema.day01;
/*
* 案例:方法练习(输出最大值)
* 定义方法,方法中定义两个变量,判断较大值并比较
* 调用方法查看结果
*
* */
public class Demo02 {
public static void main(String[] args) {
getMax(10,20);
getMax(100,20);
}
public static void getMax(int a, int b){
// int a=10;
// int b=20;
if(a>b){
System.out.println("max:"+a);
}else if(b>a){
System.out.println("max:"+b);
}else{
System.out.println("相等");
}
}
}
-
形参和实参
形参:方法定义中的参数,作用是接收实参
实参:方法调用中的参数,本质是参与操作的数据
练习A
package ithema.day01;
import java.util.Scanner;
/*
* 需求:
* 定义方法,接受三个整数,获取中间值并打印
* 通过键盘录入三个整数,作为参数传递,调用方法查看结果
*
* */
public class A {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
getMid(a, b, c);
}
//1.定义方法
public static void getMid(int a, int b, int c){
//2.获取接受的是哪个整数中间值,并打印
//三元运算符
//先判断布尔表达式的结果,如果结果为true三元表达式的结果就是表达式1的值,否则就是表达式2的值。
//因为肯定会有一个结果。所以我们在使用的时候需要把这个结果使用(用变量保存,打印等)起来。不然就没有意义。
int max = (a>b?a:b) >c ? (a>b?a:b):c;
int min =(a<b?a:b) < c ? (a<b?a:b):c;
int mid =(a+b+c)-(max + min );
System.out.println("中间值"+mid);
}
}
-
带返回值的方法的定义和调用
方法定义
-
格式
public static 数据类型 方法名(参数){return 数据;}
- 范例1
public static boolean isEvenNumber(int number){return ture;}
- 范例2
publliic static int getMax(int a,int b){return 100;}
- 注意
方法定义时return后面的返回值与方法定义上的数据类型必须要匹配,否则程序将报错
package ithema.day01;
public class Demo03 {
public static void main(String[] args) {
boolean flag =isEvenNumber(10);
System.out.println(flag);
}
public static boolean isEvenNumber(int number) {
if (number % 2 == 0) {
return true;
}else{
return false;
}
}
}
优化练习1
public class Demo02 {
public static void main(String[] args) {
int max = getMax(10,20);
System.out.println(max);
}
public static int getMax(int a, int b){ //void代表返回值为空
// int a=10;
// int b=20;
if(a>b){
return a;
}else{
return b;
}
}
}
-
注意事项
-
方法通用格式
方法重载
面向对象基础
-
面向对象概述
类是对象的抽象,对象是类的实体
-
类和对象
-
类:是对一类具有共同属性和行为事物的描述
- 属性->成员变量
- 行为->成员方法
-
对象 :根据类创建出的多个实体
-
对象的内存图
- 栈内存:方法调用进栈执行
- 堆内存:new出来的东西都进堆,进堆就会开辟空间产生地址值
-
成员变量和局部变量的区别
- 类中位置不同 :成员变量在类中方法外,局部变量在方法中(包括形参)
- 内存中的位置不同:局部变量进入栈内存,成员变量进入堆内存
- 生命周期不同:局部便跟随方法的调用存在,随着方法弹栈(出栈)而消失;成员变量根据对象的创建而存在,随着对象消失而消失
- 初始化值不同 :成员变量有默认初始值(null,0,0.0),局部变量没有
-
类的定义
-
package ithema.day02; /* 创建对象 格式:类名 对象名 = new 类名 范例:Phone P =new Phone(); 使用对象 1:使用成员变量 格式:对象名.变量名 范例:p.brand 2.使用成员方法 格式:对象名.方法名(参数) 范例:p.call() */ public class PhoneDemo { public static void main(String[] args) { Phone p = new Phone(); p.brand ="小米"; p.price=1999; p.color ="白"; /* System.out.println(p.brand); System.out.println(p.price); System.out.println(p.color);*/ p.show(); p.call(); p.sendMessage(); } }
-
-
封装
-
private关键字
-
package ithema.day02;
public class StudentTest {
public static void main(String[] args) {
//创建对象
Student s1 = new Student();
//赋值
s1.setName("张三");
s1.setAge(18);
//取值
System.out.println(s1.getName());
System.out.println(s1.getAge());
s1.show();
}
}
-
this关键字
- 代表本类对象,可以调用本类成员
- 作用:解决局部变量与成员变量重名的问题
package ithema.day02;
/*
汽车类
private 是一个权限修饰符,可以修饰成员,代表私有的意思
被private修饰的成员,只能在本类中进行访问(外界不能直接使用)
针对被private修饰的成员变量,提供get 和set方法(获取/赋值)
*/
import java.sql.SQLOutput;
public class Car {
//成员变量:私有
private String brand;
private double price;
private String color;
//成员方法:get和set方法
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
//局部变量brand 和 成员变量 brand ,重名了!
//由于Java遵循就近原则,这里是局部变量brand 自己给自己赋值!
//成员变量 =局部变量;
//this :代表本类对象,可以调用本类对象
this.brand = brand;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
//成员方法
public void drive() {
System.out.println("Car driving");
}
}
package ithema.day02;
public class CarTest {
public static void main(String[] args) {
//创建对象
Car c1 = new Car();
//打印对象名,展示地址值
System.out.println(c1); //ithema.day02.Car@b4c966a
/*
ithema.day02.Car :全类名 =包名 + 类名;
@ :分隔符
b4c966a:十六进制的内存值
0~9 a~f
*/
//取值
System.out.println(c1.getBrand());
System.out.println(c1.getPrice());
System.out.println(c1.getColor());
//赋值
c1.setColor("red");
c1.setPrice(100);
c1.setBrand("Toyota");
//取值
System.out.println(c1.getColor()+" "+c1.getPrice()+" "+c1.getBrand());
//调用方法
c1.drive();
}
}
-
封装概念
是面向对象三大特征之一(封装,继承,多态)
是面向对象语言对客观世界的模拟,客观世界成员变量都是隐藏在对象内部,外部是无法直接操作的
-
封装原则
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过对该类提供的方法来实现对隐藏信息的操作和访问
成员变量private,提供对应的getXxx()/setXxx()方法
-
封装好处
通过方法来控制成员变量操作,提高了代码的安全性
把代码用方法进行封装,提高了代码的复用性
-
构造方法
本质上,作用就是创建对象,借助构造方法的加载时机,完成赋值
new 类名(参数) ;// new 一次自动调用一次
-
空参构造
package ithema.day02;
public class Teacher {
private String name;
private int age;
/*
构造方法格式:
public 方法法名(){
}
构造方法作用:创建对象
注意事项:
1.方法名必须和类名一致
2.每new一次对象,自动执行一次
*/
public Teacher() {
System.out.println("空参构造执行了...");
}
public int getAge() {
return age;
}
public void setAge(int age) { //void 返回值为空
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package ithema.day02;
public class TeacherTest {
public static void main(String[] args) {
//创建对象
Teacher t = new Teacher();
}
}
-
带参构造
package ithema.day02;
public class Teacher {
private String name;
private int age;
/*
构造方法格式:
public 方法法名(){
}
构造方法作用:创建对象
注意事项:
1.方法名必须和类名一致
2.每new一次对象,自动执行一次
3.带参构造的本质,就是在创建对象的同时,完成赋值
4.两种构造都提供,java允许方法重载
*/
public Teacher(String name, int age) {
this.name = name;
this.age = age;
}
public Teacher() {
System.out.println("空参构造执行了...");
}
public int getAge() {
return age;
}
public void setAge(int age) { //void 返回值为空
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package ithema.day02;
public class TeacherTest {
public static void main(String[] args) {
//带参构造创建对象,并赋值
Teacher t1 = new Teacher("张三",18);
System.out.println(t1.getAge());
System.out.println(t1.getName());
//空参构造创建对象,配合set方法完成赋值
Teacher t2 =new Teacher();
t2.setName("李四");
t2.setAge(18);
System.out.println(t2.getAge());
System.out.println(t2.getName());
}
}
-
构造方法的注意事项
- 方法名必须和类名一致
- 每new一次对象,自动执行一次(加载时机)
- 带参构造的本质,就是在创建对象的同时,完成赋值(赋所有的值)
- 如果我们不提供构造,系统提供一个默认的空参构造;如果我们提供带参构造,系统就不会给出空参了
- 结论:两种构造都写出来,java允许方法重载!
-
JavaBean 标准类
练习1
package ithema.day02.标准类;
/*
电影测试类
*/
public class MovieTest {
public static void main(String[] args) {
//构造空参+set
Movie m1 = new Movie();
//赋值
m1.setName("战狼");
m1.setType("战争");
m1.setDirector("吴京");
//取值
System.out.println(m1.getName()+" ,"+m1.getType()+" ,"+m1.getDirector());
//带参构造直接赋值
Movie m2 = new Movie("阿凡达","詹姆斯卡梅隆","科幻");
System.out.println(m2.getName()+" ,"+m2.getType()+" ,"+m2.getDirector());
}
}
package ithema.day02.标准类;
/*
标准的JavaBean
1.成员变量:必须私有,不能赋值
2.构造方法:提供两种
3.成员方法:针对私有的get和set方法,根据题目提供其他成员的变量
电影类
1.成员变量
2.结构方法
3.成员方法
*/
public class Movie {
//1.成员变量:必须私有
private String name; //名称
private String director; //导演
private String type; //类型
//2.构造方法:提供两种 ->Alt +Insert -> Constructor -> 1.选择空参 2.选择带参
public Movie() {}
public Movie(String name, String director, String type) {
this.name = name;
this.director = director;
this.type = type;
}
//3.成员方法:针对私有的get和set方法,根据题目提供其他成员的变量 Alt+Intsert -> Getter & Setter -> 全选
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDirector() {
return director;
}
public void setDirector(String director) {
this.director = director;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
-
快捷键
alt + ins(insert) 快速生成
ctrl +a 全选
常用的API
-
API概述(应用程序编程接口)
-
获取已有对象并使用
-
帮助文档的使用流程
-
-
包和导包
-
String
-
Scanner键盘对象 键盘录入
-
Random随机数对象
-
GUI
- Graphical User Interface (图形用户接口)
- 用图形的方式,来显示计算机操作界面
-
使用的包
- java.awt包 :抽象窗口工具包,需要调用本地系统方法实现功能,属于重量级控件
- Java.swing包:在awt系统上建立了一套图形界面系统,提供了更多的组件,而且完全由Java实现。增强了移植性,属于轻量级控件
-
常用的GUI组件
-
-
JFrame
- 是一个顶层窗口
- 构造方法:JFrame():构造一个最初不可见的新窗体
- 成员方法:
- void setVisible(boolean b) :显示或隐藏此窗口具体取决于参数b的值
- void setSize (int width,int height):调整此组件的大小,使其宽度为width,高度为hight,单位为像素
-
-
字符串
-
String概述 :java.lang.String 类代表字符串,java程序中所有字符串文字(例如"abc")都为此类对象
- String的注意点:字符串的内容是不会发生改变,它的对象创建后不能被更改。
- 字符串拼接产生一个新的字符串
-
创建String 对象的两种方式
-
直接赋值
- new
-
-
Java常用方法(比较)
-
==
- 进本数据类型 比较的是数据类型
- 引用数据类型比较的是数据类型
-
字符串比较
- boolean equals方法(要比较的字符串)
- 完全没一样才是true,否则为false
- boolean equalslgnoreCase(要比较的字符串)
- 忽略大小写比较
-
-
练习
-
金额转换
- 查表法
-
-
StringBuilder
- 可以看作一个容器,创建之后里面的内容是可以改变的
- 作用:提高字符串效率
-
构造方法
-
常用方法
-