对象:现实世界中客观存下的实体都是对象(只要你能看得见、摸得着的物体都是对象),由属性和方法组成。万事万物皆对象
类:具有相同属性和方法的多个对象的集合。
package cn.bdqn.demo01;
public class Dog {
//定义属性
public String name;
public int health;
public int love;
//定义方法
public void print(){
System.out.println("狗的昵称:"+name+",健康值:"+health+",亲密度:"+love);
}
}
数据类型 属性名;
package cn.bdqn.demo01;
public class School {
//定义属性: 数据类型 属性名;
String schoolName;
String address;
int year;
String phoneNumber;
public void printInfo(){
System.out.println("学校名称:"+schoolName+",地址:"+address+",创办年数:"+year+",联系电话:"+phoneNumber);
}
}
访问权限修饰符 返回值类型 方法名([参数列表]){
方法体
}
创建School类对象
类名 对象名 = new 类名();
package cn.bdqn.demo01;
public class SchoolTest {
public static void main(String[] args) {
//创建School类对象
//类名 对象名 = new 类名();
School school1 = new School();
//给对象的属性赋值 对象名.属性名 = 数据;
school1.schoolName = "魔法学院";
school1.address = "安徽合肥";
school1.year = 100;
school1.phoneNumber = "13822556677";
//对象调用方法 对象名.方法名();
school1.printInfo();
School school2 = new School();
school2.schoolName = "北大青鸟";
school2.address = "合肥创投产业园";
school2.year = 30;
school2.phoneNumber = "13288889999";
school2.printInfo();
System.out.println(school2.schoolName);
}
}
访问权限修饰符:描述的是方法的作用范围,主要有public(公共)、默认的(什么都不写)、protected(受保护的)、private(私有的)
返回值类型:调用方法返回结果的类型,可以是8大基本类型,也可以是3大引用类型,还可以没有返回值,写void
方法名:方法的名称,小驼峰命名法,做到见名知意
参数列表:方法可以需要你传递参数,也可以不需要参数,当方法有参数的时候,可以有一个参数,也可以有多个参数,多个参数之间使用,隔开
方法体:方法实现功能的具体代码体现
package cn.bdqn.demo02;
public class Teacher {
//定义属性
String name;
String professionalDirection;
String teachingCourses;
int teachingExperience;
//定义方法
public void print(){
System.out.println(name);
System.out.println("专业方向:"+professionalDirection);
System.out.println("教授课程:"+teachingCourses);
System.out.println("教龄:"+teachingExperience);
}
}
package cn.bdqn.demo02;
public class TeacherTest {
public static void main(String[] args) {
//创建Teacher类对象
Teacher teacher1 = new Teacher();
teacher1.name = "王老师";
teacher1.professionalDirection = "计算机";
teacher1.teachingCourses = "使用Java语言理解程序逻辑";
teacher1.teachingExperience = 5;
//调用print()方法
teacher1.print();
}
}
根据方法是否有返回值,将方法定义为:
无返回值的方法
返回值类型写void,在调用无返回值的方法,不需要用任何变量来接收
有返回值的方法
1)返回值可以是任意的基本数据类型和任意的引用数据类型,调用有返回值的方法,需要用对应类型的变量来接收,或者直接将返回值输出
2)有返回值的方法需要在方法体内通过return关键字将结果返回回去
根据方法是有有参数列表,将方法定义为:
无参方法
方法名后面的()中没有任何参数
有参方法
方法名后面的()中有参数,参数的个数可以是1个或者多个,参数的类型可以是基本数据类型,也可以是引用数据类型
*
综上所述,方法的种类主要有以下几种:
无返回值的无参方法
无返回值的有参方法
有返回值的无参方法
有返回值的有参方法
方法调用的2个原则:
package cn.bdqn.demo03;
public class Demo01 {
public void test1(){
System.out.println("我是没有返回值的方法");
}
public String test2(){
String str = "hello java";
return str;
}
//num1和num2是定义方法时表示的参数名称,是一个形式参数,简称形参
public void test3(int num1,int num2){
System.out.println("你传递的两个参数数据是:"+num1+","+num2);
}
public int test4(int num1,int num2,int num3){
return num1+num2+num3;
}
}
package cn.bdqn.demo03;
public class Demo01Test {
public static void main(String[] args) {
//创建Demo01的对象,通过对象来调用Demo01类中的test1()和test2()方法
Demo01 d1 = new Demo01();
d1.test1();
String result =d1.test2();
System.out.println(result);
System.out.println(d1.test2());
d1.test3(10, 20);
int a =100;
int b =200;
//调用有参方法的时候,传递的a和b是实际参数,简称实参,形参和实参的名称不需要一样,但是数据类型要一样
d1.test3(a, b);
int result2 =d1.test4(100, 200, 185);
System.out.println(result2);
System.out.println(d1.test4(10, 20, 30));
}
}
对数组进行升序排序,遍历输出,复制操作
package cn.bdqn.demo04;
public class ArraysMethod {
// 定义一个方法实现对int类型的数组进行升序排序
public static void sortUp(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
for (int j = 0; j < array.length - 1 - i; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
// 定义一个方法将数组输出
public static void showArrays(int[] array) {
for (int i = 0; i < array.length; i++) {
if (i == 0) {
System.out.print("[");
}
if (i != array.length - 1) {
System.out.print(array[i] + ",");
} else {
System.out.print(array[i]);
}
if (i == array.length - 1) {
System.out.println("]");
}
}
}
// 定义一个方法实现对数组进行复制操作
public static int[] copyArray(int[] arr, int length) {
int[] newArray = new int[length];
// 要先判断length的值和arr.length值的大小
if (length <= arr.length) {
for (int i = 0; i < length; i++) {
newArray[i] = arr[i];
}
} else {
for (int i = 0; i < arr.length; i++) {
newArray[i] = arr[i];
}
}
return newArray;
}
/*定义一个方法实现对已经升序排序的数组中插入一个元素
*public static int[] insertArray(int[] nums,int number){
*
*
*
* return nums;
*
*}
*/
}
package cn.bdqn.demo04;
public class Test {
public static void main(String[] args) {
int[] num1 = {11,56,98,76,46,33,19,85};
//遍历前输出数组
ArraysMethod.showArrays(num1);
ArraysMethod.sortUp(num1);
//遍历后输出数组
ArraysMethod.showArrays(num1);
int[] newNums =ArraysMethod.copyArray(num1, 18);
ArraysMethod.showArrays(newNums);
}
}
package cn.bdqn.demo06;
public class Visitor {
//定义一个方法,实现根据年龄输出门票价格
public void price(String name,int age){
if(age>=18&&age<=60){
System.out.println(name+"的年龄为"+age+",门票价格:20元");
}else{
System.out.println(name+"的年龄为"+age+",门票免费");
}
}
}
package cn.bdqn.demo06;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Visitor v = new Visitor();
String name =null;
System.out.println("输入姓名:");
name =sc.next();
while(!name.equals("n")){
System.out.println("输入年龄:");
int age =sc.nextInt();
v.price(name, age);
System.out.println("输入姓名:");
name =sc.next();
}
System.out.println("退出程序");
}
}
1)访问权限修饰符 返回值类型 方法名([参数列表]){
方法体
}
2)创建School类对象:类名 对象名 = new 类名();
3)方法的种类主要有以下几种:无返回值的无参方法,无返回值的有参方法,有返回值的无参方法,有返回值的有参方法。
4)无返回值的方法
返回值类型写void,在调用无返回值的方法,不需要用任何变量来接收
5)有返回值的方法
6)无参方法
方法名后面的()中没有任何参数
7)有参方法
方法名后面的()中有参数,参数的个数可以是1个或者多个,参数的类型可以是基本数据类型,也可以是引用数据类型
8)方法调用的2个原则:
01:写一个人的类
属性:名字,性别,年龄
方法:(1)自我介绍的方法(2)吃饭的方法
创建一个对象“张三”
02:写一个汽车类:
属性:品牌;车长;颜色;价格;
方法:跑的方法
创建五个对象:“捷达”,“宝马”,“劳斯莱斯”,“科鲁兹”,“迈锐宝”
03:写一个课程类:
属性:课程名;学时;任课老师;
创建五个对象:“c语言”,“Java编程”,“php网络编程”,“c++”,“数据结构”
04: 0——————>X
|
|
| . P(X,Y)
|
|
Y
定义一个类,用于描述坐标点
(1) 具有计算当前点到原点距离的功能
(2) 求到任意一点(m,n)的距离
(3) 具有坐标点显示功能,显示格式(x,y)
05:定义一个圆类型
提供显示圆周长功能的方法
提供显示圆面积的方法
06:编程创建一个Box类,在其中定义三个变量表示一个立方体的长、宽和高,定义一个方法求立方体的体积。创建一个对象,求给定尺寸的立方体的体积。
07:定义一个计算机类:
属性:品牌;价格;颜色;
方法:(1)编程的功能 (2)上网的功能
实例化两个对象:“lenovo”;“hasee”
08:编写一个类Student,代表学员,要求:
(1)具有属性:学号、姓名、年龄、性别、专业。
(2)具有方法:自我介绍,负责输出该学员的姓名、年龄、性别以及专业。
09:Java对内存的划分分为几类?
划分一:运行时数据区域; 程序计数器; Java虚拟机栈; 本地方法栈; 堆; 方法区;运行时常量池; 对象访问。
划分二:栈区、堆区、静态区、代码区。
10:堆和栈的区别?
堆:存放的是引用数据类型;
栈: 存放的是基本数据类型;容量小、速度快、适合存放小型数据。