1142 字
3 分钟
【Java】Java学习笔记(未完成)

类与对象#

类与对象概念#

1)类是抽象、概念的,是数据类型

2)对象是具体、实际的,是实例

3)类是对象的模板,对象是类的一个个体,对应一个实例

属性(成员变量)#

属性 = 成员变量 = 字段

例:Car(name,price,color)

class Car{
String name;
double price;
String color;
String[] master;//属性可以是基本数据类型,也可以是引用类型(对象,数组)
}

1)属性的定义语法和变量一致

​ 例: 访问修饰符 属性类型 属性名;

protected String name;

访问修饰符:控制实行的访问范围,分为四种:public、protected、private以及默认

属性可以是基本数据类型,也可以是引用类型(对象,数组)

Car c1 = new Car()
//创建 Car 对象
//c1 是对象名(对象引用)
//new Car() 创建的对象空间(数据)才是真正的对象

属性不赋值有默认值,具体:int、short、byte、long 为 0;float、double 为0.0;char 为 \u0000;boolean 为 false。

创建对象#

1)先声明、再创建

Car car;//声明对象 cat
car = new Car();//创建

2)直接创建

Car car = mew Car();

访问属性#

对象名.属性名

car.name;

Java 内存的结构分析#

栈:一般存放基本数据类型(局部变量)

堆:存放对象(Car car,数组等)

方法区:常量池(常亮,比如字符串),类加载信息

示意图:[Car(name,price,color)]

案例 1:

Person p = new Person();
p.name = "jack";
p.age = 10;
//先加载 Person 类信息(属性和方法信息,只会加载一次)
//在堆中分配空间,进行默认初始化(按规则)
//把地址赋给p,p 就指向对象
//进行指定初始化

案例 2:

image-20240416180933826

成员方法#

class Person {
//public 表示方法是公开
//void 表示方法没有返回值
//speak() speak 是方法名,() 是形参列表
//{} 是方法体
public Void speak(){
System.out.println("Hello world.");
}
}

方法写好但不去调用,就不会输出

先创建对象,然后调用方法

Person p1 = new Person();
p1.speak();

成员方法的定义#

访问修饰符 返回数据类型 方法名 (形参列表…){//方法体

​ 语句;

​ return 返回值;//return 语句非必须

}

解释:#

形参列表:表示成员方法的输入

​ getSum(int num1,int num2)

返回数据类型:表示成员方法的输出,void 表示没有返回值

方法主体:实现某一功能的代码块

访问修饰符:控制方法使用的范围

注意:#

​ 一个方法最多只有一个返回值(返回多个值可以返回数组)

​ 返回类型可以为任意类型,包括基本类型或引用类型(即数组、对象)

​ 如果方法要求返回值,结尾必须有「return 返回值;」语句,如果为 void 可以不用或者写「return;」

​ 方法名遵循驼峰命名法

​ 一个方法可以有 0 到多个参数,用逗号间隔,参数可以是任何类型

​ 参数列表传入类型应该要求一致或者兼容(int 对整型或byte)

​ 定义时参数叫做形式参数(形参)、调用时参数叫实际参数(实参),实参和形参个数、类型、顺序必须一致

​ 方法不能再定义方法(不能嵌套定义)

调用细节#

同一个类的方法可以直接调用:#
class A{
public void print(int n){
System.out.println("打印" = n);
}
public void sayOk(){
print(10);
}
}
跨类调用:#
class A{
B b = new B();//创建一个 B 类的对象,然后再调用方法
b.hi;
}
class B{
public void hi(){
System.out.println("hi");
}
}

方法递归#

让方法自己调用自己:

class T{
public int fibonacci(int n){
if(n >= 1){
if(n == 1 || n == 2){
return 1;
}else{
return fibonacchi(n-1) + fibonacchi(n-2);
}else{
System.out.println("输入 n >= 1 的整数");
}
}
}
}

方法重载#

java 允许同一个类中,多个同名方法的存在,但是要求「形参列表」不一致

好处:方便起名和记名

方法名必须相同,参数列表必须不同(个数或顺序或类型),返回类型无要求

class Calculater{
//int 和 int
public int calculate(int n1,int n2){
return n1 + n2;
}
//int 和 double
public double calculate(int n1,double n2){
return n1 + n2;
}
//double 和 int
public double calculate(double n1,int n2){
return n1 + n2;
}
//int 和 int 和 int
public int calculate(int n1,int n2,int n3){
return n1 + n2 + n3;
}
}

可变参数#

java 允许将同一个类中多个同名同功能,但是参数个数不同的方法,封装成一个方法

语法:#

​ 访问修饰符 返回类型 方法名(数据类型… 形参名){

​ }

//优化前
class HspMethod{
public int sum(int n1,int n2){
return n1 + n2;
}
public int sum(int n1,int n2,int n3){
return n1 + n2 = n3;
}
public int sum(int n1,int n2,int n3,int n4){
return n1 + n2 + n3 + n4;
}
//……
//优化后
public int sum(int... nums){
int res = 0;
for(int i = 0;i < nums.length;i==){
res += nums[i];
}
return res;
//「int...」表示接受可变参数,int 是类型,接受零到多个int
//使用可变参数 nums 的时候可以当做数组使用
}
}
注意:#

1)可变参数的实参可以为 0 到多个

2)可变参数的实参可以是数组

3)可变参数本质就是数组

4)可变参数可以和普通类型放在一起作形参列表,但必须保证可变参数在最后

5)一个形参列表中只能出现一个可变参数

作用域#

1)java 编程中主要的变量就是属性(成员变量)和局部变量

2)局部变量一般在成员方法中定义的变量(Cat类中的cry)

3)作用域分类

​ 全局变量:也叫属性,作用域在整个类体

​ 局部变量:除了属性以外的其他变量,作用域在其定义的代码块中

4)全局变量可以不赋值直接使用(有默认值),局部变量必须赋值后使用(无默认值)

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

【Java】Java学习笔记(未完成)
https://blog.lwrzgocloud.top/posts/java-javaxuexibiji-weiwancheng/
作者
Lwrzgo
发布于
2024-08-07
许可协议
Unlicensed

部分信息可能已经过时

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00