当前位置: 首页 > news >正文

Java学习笔记二(类)

前言:

类的五大构成(1成员变量,2成员方法,3构造器,4代码块,5内部类)

注释:类存放在(方法区),变量存放在(栈区),对象存放在(堆区)

(1) 类的定义

public class 类名 {...
}

(2) 类的实例化

注释:对象(类的实例化):类名 对象名 = new 类名();

public void test() {类型 对象名 = new 类型();
}

1 成员变量(全局变量)

public class 类名 {[修饰符] 类型 全局变量名 [=默认值];
}

2 成员方法

2.1 方法定义

public class 类名 {[修饰符] void 方法名() {... }[修饰符] void 方法名(参数类型 参数名, ...) {... }[修饰符] 返回值类型 方法名() {... return 返回值;}[修饰符] 返回值类型 方法名(参数类型 参数名, ...) {... return 返回值;}
}

2.2 局部变量

注释:局部变量声明在方法内部,只在当前方法执行时有效

public void 方法名() {类型 局部变量名 [=初期值];
}

2.3 参数传递

(1) 基本类型:值传递

// 先输出x的值(2)
// 再输出i的值(1)
public static void main(String[] args) {int i = 1;test(i);System.out.println(i);
}public static void test(int x) {// 传进来的是i的值,x值变更不影响i的值。x = x + 1;System.out.println(x);
}

(2) 引用类型:地址传递

public class Data {int age = 0;
}// 先输出d2的属性值(2)
// 再输出d1随d2变更了的属性值(2)
public class Main {public static void main(String[] args) {Data d1 = new Data();d1.age=1;test(d1);System.out.println(d1.age);}public static void test(Data d2) {// 传进来的是d1的地址,d2的属性值变更,影响外面d1的属性值一起变更d2.age=2;System.out.println(d2.age);}
}

(3) 可变参数列表

注释:可变参数默认是数组类型,只能有一个可变参数,必须在参数列表的最后。

// 可变参数列表可以实现,动态参数个数的传递
public static void main(String[] args) {test(1, "a");test(2, "a", "b");test(3, "a", "b", "c");String[] strs = {"a","b","c"};test(4, strs);
}public static void test(int p1, String p2...) {// p2是不固定长度的数组
}

3 构造器

注释:构造器在 new 对象() 时调用

public class Test {[修饰符] 类名() { ... }   // 无参构造器(默认。只有无参构造器时不用显示声明)[修饰符] 类名(参数类型 参数名, ...) {... }  // 有参构造器,定义有参构造器后默认无参构造器失效。
}

4 代码块

注释:代码块也叫(实例代码块),代码块代码在每次对象实例化时调用,调用静态方法时不执行,作用是初始化全局变量。

注释:代码块代码由上到下执行,代码块全部执行完再执行构造器。

public class 类名 {{代码块代码...}
}

注释:代码块未声明的变量为全局变量,与全局变量同名局部变量,用局部变量。

public class Test {int a = 0;int b = 1;{int a = 1;int c = 2;System.out.println(a); // 局部变量System.out.println(b); // 全局变量System.out.println(c); // 局部变量}
}

5 内部类

5.1 成员内部类(非静态内部类)

(1) 成员内部类的定义

注释:成员内部类类似成员方法,可访问主类的私有属性,静态变量。

public class 类名 {// 内部类声明在类内部public class 内部类名 {  // 没有修饰符的内部类只能被主类同包的类调用...}
}

(2) 成员内部类的调用

主类.内部类 变量名 = new 主类().new 内部类();  // 内部类的实例化

(3) 内部类对主类同名属性访问

访问主类属性:主类名.this.变量名

访问内部类属性:this.变量名

public class 主类 {public int type1 = 1;public class 内部类 {public int type1 = 2;public void test() {主类.this.type1; //主类属性this.type1;  //内部类属性}}
}

5.2 局部内部类

声明在(方法,构造器,代码块)内部,分为匿名与非匿名。好像没啥用!

public class Test {public void testFn() {class SubTest{void test() {...}}SubTest s = new SubTest();}
}

5.3 静态内部类

(1) 静态内部类定义

public class 主类 {static class 静态内部类 {public static int num = 1;}
}

(2) 静态内部类调用

public class Main {public static void main(String[] str) {主类.静态内部类.属性;主类.静态内部类.方法();}
}

5.4 匿名内部类(重点)

注释:匿名内部类可简化为Lambda表达式(之后再详细介绍)

public void fn() {类 对象 = new 抽象类接口() {抽象方法实现(){…}}
}

文章转载自:

http://JbsamOv6.tfnLy.cn
http://0yHOEUgX.tfnLy.cn
http://L1JC4kqX.tfnLy.cn
http://t3LvnAYy.tfnLy.cn
http://rtvQxFoQ.tfnLy.cn
http://QEUqnpvK.tfnLy.cn
http://O4RYyZoo.tfnLy.cn
http://EhYmXqGC.tfnLy.cn
http://EoOvQ1z0.tfnLy.cn
http://Mve0nDii.tfnLy.cn
http://CfyvpWHM.tfnLy.cn
http://0PQMlCdA.tfnLy.cn
http://9RpgD82z.tfnLy.cn
http://OVXW6ehA.tfnLy.cn
http://S8r7sdB2.tfnLy.cn
http://XhwGO1Re.tfnLy.cn
http://fCx2KWru.tfnLy.cn
http://obm2Tp2a.tfnLy.cn
http://AAy1jQDB.tfnLy.cn
http://jyk0QhO0.tfnLy.cn
http://6ff5ZPFX.tfnLy.cn
http://oqdLLsNc.tfnLy.cn
http://QPwWPmHT.tfnLy.cn
http://yOScLjWN.tfnLy.cn
http://t2AmWMrC.tfnLy.cn
http://9pX1xZ8r.tfnLy.cn
http://5K6l6Vol.tfnLy.cn
http://FVc2gaeT.tfnLy.cn
http://XnCFmV2n.tfnLy.cn
http://lVFGM2Se.tfnLy.cn
http://www.dtcms.com/a/370544.html

相关文章:

  • NPU边缘推理识物系统
  • 避免使用非const全局变量:C++中的最佳实践 (C++ Core Guidelines)
  • 贪心算法应用:保险理赔调度问题详解
  • ERP系统价格一般要多少?ERP定制开发性价比高,功能模块自由选配
  • 接口权限验证有哪些方式
  • 【数据分享】土地利用shp数据分享-广东
  • C++基础知识
  • 从“帮写文案”到“管生活”:个人AI工具的边界在哪?
  • --定位--
  • 一、算法与数据结构的本质关系:灵魂、肉体与图书馆
  • 【Python自动化】 21.3 Pandas Series 核心数据结构完全指南
  • MySQL DBA需要掌握的 7 个问题
  • Docker加速下载镜像的配置指南
  • 从“能说话”到“会做事”:AI工具如何重塑普通人的工作与生活?
  • RAG提示词分解
  • 第三节:HTML5 高级特性与应用​
  • 【C++】模板和STL
  • react生命周期,详细版本
  • NLWeb与AutoRAG跨境电商RAG推荐API接入实战教程
  • Storybook:多框架兼容的前端组件开发工具,高效解决组件隔离开发与文档管理问题
  • 嵌入式笔记系列——UART:TTL-UART、RS-232、RS-422、RS-485
  • Week 15: 深度学习补遗:集成学习初步
  • 计算机CPU的工作原理介绍
  • 科学研究系统性思维的方法体系:个人研究项目管理
  • macbook intel 打开cursor会闪退
  • Day22_【机器学习—集成学习(2)—Bagging—随机森林算法】
  • 2025年大数据专业人士认证发展路径分析
  • 【CV】Opencv图像处理——①几何变换 (1)
  • dify+Qwen2.5-vl+deepseek打造属于自己的作业帮
  • 待定系数法分解分式