Java基础笔记:Day_07 封装思想

使用 Azure DevSecOps 和 AIOps 构建可扩展且安全的多区域金融科技 SaaS 平台 这家虚构的金融科技 SaaS 组织在 Microsoft Azure 上构建了一个现代化的多区域架构,以实现高可用性、主动安全性和简化的 DevSecOps 工作流。如果您是 DevOps 从业者、SRE 专业人士或致力于创建弹性、可扩展且安全的金融科技解决方案的技术领导者,您将从中获得可直接应用于您自身项目的见解和经验教训。与大多数快速扩张的金融科技公司一样,他们需要确保不间断的正常运行时间、坚不可摧的安全性以及快速的功能交付,以满足全球用户群的需求。即使是短暂的中断也会损害用户的信心和忠诚度。 阅读详情

一、变量的生命周期

成员变量: 全局变量/字段(Field), 直接定义在类中,方法外面.
1):类成员变量. 使用static修饰的字段.
2):实例成员变量. 没有使用static修饰的字段.
局部变量: 变量除了成员变量,其他都是局部变量.
1): 方法内部的变量.
2):方法的形参.
3):代码块中的变量,一对{}.

变量的初始值:初始化才会在内存中开辟空间.
成员变量: 默认是有初始值的
局部变量: 没有初始值,所以必须先初始化才能使用.

变量的作用域:
成员变量: 在整个类中都有效.
局部变量: 在开始定义的位置开始,到紧跟着结束的花括号为止.
成员变量,可以先使用后定义,局部变量必须先定义而后才能使用.

class   ABC
{
          String info = null;//成员变量
          void  doWork(String name)
          {
               System.out.println(x);
               int age;//局部变量
                  
               if(true) 
               {
                   int  num;//局部变量
               }
          }
          String  x ;
}

在这里插入图片描述
什么时候使用成员变量和局部变量:
1:考虑变量的生存时间,这会影响内存开销。
2:扩大变量作用域,不利于提高程序的高内聚。

开发中应该尽量缩小变量的作用范围,如此在内存中停留时间越短,性能也就更高。
不要动不动就使用static修饰,一般,定义工具方法的时候,static方法需要访问的变量,该变量属于类,此时才使用static修饰字段.
也不要动不动就使用成员变量,因为存在着线程不安全问题,能使用局部变量尽量使用局部变量。

二、package与import

关键字:package.
作用:专门用来给当前的java文件设置包名
语法格式:package 包名.子包;
//必须把该语句作为Java文件中,并且在第一行代码(所有代码之前)
//包名后也可以有子包…子子包…子子子包…等
如果此时java文件中使用了package语句,表示此时在当前目录中先生成包名,
再在包中生成class文件。
自定义的包名,不能以java.打头,因为Java的安全机制会检查。

package PcgB.pcg;//将会自动在目录中生成一个PcgB/pcg文件,其中就放置了该类的字节码文件。
public class PackageDemo
{
	public static void main(String[] args)
	{
		System.out.println("Hello!");
	}

}

JDK中各个包的功能
在这里插入图片描述
关键字:import
学习过的 数组的工具类:Arrays类,该类在java.util包中。Arrays类的全限定名:java.util.Arrays,当我们需要使用的时候,我们需要完整的输入它的路径名称,但是使用了import之后,就可以将这个工作简化。

语法格式: import 需要导入类的全限定名;
此后,在本Java文件中,只需要使用类的简单名称即可.

/*
import java.util.Arrays;
import java.util.Set;
import java.util.List;
*/
//上述代码分别表示引入了java.util包下的Arrays类,Set类,List类
//问题:如果我们还需要引人其他类,我们还需要提供N个import语句
/*
	解决方案:使用通配符 *
*/
//语法格式: import 导入类的全限定名;

import java.util.*;
class ImportDemo 
{
	public static void main(String[] args) 
	{
		int[] arr = new int[] {2,1,3,4,5,6};
		//打印数组
		String ret = Arrays.toString(arr);
		//排序
		Arrays.sort(arr);
		ret = Arrays.toString(arr);
		//打印
		System.out.println(ret);
		//没有使用import之前,操作不在同一包中的类,要使用全限定名操作。
		//解决方案:直接使用import语句,直接把某个包下的类直接导入当前类中
		Set s;
		List l;
		//每次使用Arrays类中的静态方法,我们使用了import语句,
		//但每次都需要使用arrays类调用静态方法。
	}
}


/*
	如果A类和B类不在同一个包中,若A类需要使用到B类,
	此时就得让A类中取引入B类。
	Arrays 类的全限定名是:java.util.Arrays
*/

三、封装思想与访问权限修饰符

1.封装的好处:
1):使调用者正确,方便地使用系统功能,防止调用者随意修改系统属性.
2):提高组件的重用性.
3):达到组件之间的低耦合性(当某一个模块实现发生变化时,只要对外暴露的接口不变,就不会影响到其他模块).
高内聚:把该模块的内部数据,功能细节隐藏在模块内部,不允许外界直接干预。
低耦合:该模块只需要给外界暴露少量功能方法。

class Person
{
	String name;
	private int age;//只能在本类中访问
	
	void setAge(int a)//专门用于给对象设置age数据,并把传过来数据保存到对象中
	{
		if(a < 0)
		{	
			System.out.println("NO");
			return;
		}	
		age = a; 
	}
}

class PersonDemo
{
	public static void main(String[] args)
	{
		Person p = new Person();
		p.name = "will";
		p.setAge(-17);//向外暴露方法的入口
	}
}

2.访问权限修饰符
访问权限控制:

private :类访问权限(只能在所在类中访问),
离开本类后不能“直接”访问
不写(缺省):包私有。表示包访问权限,只能在当前类的该包中访问
此刻访问者的包和定义类的包中相同才能访问
如:package a.b包中的只能用a.b的访问,即使是a包也不可以
protected :表示子类访问权限。同包中的可以访问,即使不同包但是有继承关系也可以访问。
public :公共访问权限。若某一字段使用了public修饰。则可以在当前项目中
任何地方访问。
一般的:字段的private修饰,表达隐藏,为了安全性。
拥有实现细节的方法,使用private修饰,不希望外界(调用者)看到方法的实现细节。
一般的方法我们使用public修饰供外界调用。
在这里插入图片描述.

//直接暴露给外界,供调用者直接调用即可
public void doWork()
{
          methodA();
          methodB();
          methodC();
}

//仅仅只是完成了部分操作,不需要调用者调用
private  methodA(){}
private  methodB(){}
private  methodC(){}

一般的:字段都使用private修饰,表达隐藏,为了安全性.
拥有实现细节的方法,一般使用private修饰,不希望外界(调用者)看到该方法的实现细节.
一般的,方法我们使用public修饰,供外界直接调用
一般的,我们不用缺省,即使要使用,也仅仅是暴露给同包中的其他类.
protected:一般,在继承关系中,父类需要把一个方法只暴露给子类.

四、this关键字
什么是this:
表示当前对象,什么优势当前对象.
this主要存在于两个位置:
构造器中: 就表示当前创建的对象.
方法中: 哪一个对象调用this所在的方法,那么此时this就表示哪一个对象.

当一个对象创建之后,JVM会分配一个引用自身的引用:this.
那么先来看一段有问题的代码:

 class User
{
	private String name = null;
	private int age = 0 ;
	
	public void show()
	{
		System.out.println(this.name + "," + this.age);
	}

	User()
	{
	
	}

	User(String name)
	{
		this(name,0);
	}

	User(String name,int age)
	{
		this.name = name;
		this.age = age;
	}

	public String getName()
	{
		return name;
	}
	
	public void setName(String name)
	{
		this.name = name;
	}

	public int getAge()
	{
		return age;
	}
	
	public void setAge(int n)
	{
		 age = n;
	}
}

class Demo
{
	public static void main(String[] args)
	{
		User u1 = new User("will",17);
		u1.show();

		User u2 = new User();
		u2.setAge(18);
		u2.setName("abc");
		u2.show();

	}
}

使用this:
① 解决成员变量和参数(局部变量)之间的二义性,必须使用;
② 同类中实例方法间互调(此时可以省略this,但是不建议省略)。
③ 将this作为参数传递给另一个方法;
④ 将this作为方法的返回值(链式方法编程);
⑤ 构造器重载的互调,this([参数])必须写在构造方法第一行;
⑥ static不能和this一起使用;
当字节码被加载进JVM,static成员以及存在了.
但是此时对象还没有创建,没有对象,就没有this.
创建对象并给对象设置初始值有两种方式:
方式1:先通过无参数构造器创建出一个对象,再通过对象调用相应的setter方法.
方式2: 直接调用带参数的构造器,创建出来的对象,就有了初始值.

通过构造器和通过setter方法都可以完成相同的功能.
给对象设置数据:
1):setter注入(属性注入).
2):构造注入.

如何选择:
1:如果存在带参数的构造器,方式2是比较简洁的.
2:如果在构建对象的时候需要初始化多个数据,如果使用方式2,那么构造器得提供N个参数,参数过大,不直观,此时方式1,简单明了.

方式1:
User u1 = new User();
u1.setName("Lucy");
u1.setAge(18);
方式2:
User u1 = new User("张三",17);
TC3XX - MCAL知识点(二十九):FLS MCAL配置及代码实战(英飞凌DFLASH) FLS驱动程序为DFlash 0的初始化、读取、写入和擦除提供了定义良好的配置和标准服务。除此之外,我们还提供一些非autosar服务示例 Fls_17_Dmu_CompareWordsSync、Fls_17_Dmu_CancelNonEraseJobs、Fls_17_Dmu_VerifyErase,LFls_17_Dmu_VerifySectorErase、Fls_17_Dmu_GetNotifCaller等。用户通过FLS驱动程序获得对底层DFlash0的封装访问。 阅读详情

相关推荐

Python爬虫(一)京东商品价格及详情页抓取

这是一个以http://item.jd.com/2957726.html为例的单网页抓取案例 import urllib.request; #载入urllib.request,用于获取页面html源代码 from pandas import Series; #载入series包 from pandas import DataFrame; #载入dataframe包 from bs4 impo

Data Proc 1万+

java 笔记 day5 面向对象思想(封装)

目录 1 面向对象的三大特点 1.1 封装 1.2this关键字 1.3 封装思想 1.4 java中封装的体现 2 构造方法 2.1 构造方法的注意事项 3 标准的java bean的写法 4 常用API-String 4.1 String字符串的特点 4.2 String类的构造方法 4.3 创建字符串对象的两种方式的区别 4.3.1.通过构造方法创建 4.3.2 直接赋值的方式创建 5 JVM内存模型 5.1. 堆内存 5.2.方法区 6.字符串的比较 7 Str

java学习心得之笔记 239

Tiff、jpg图片怎么样添加地理坐标信息

Tiff、jpg图片怎么样添加地理坐标信息 一般,外业调查只有地图资料,如专题图、或者地形图,如何把这些地图资料的扫描地图带上坐标信息,从而内业实现信息化处理?以上问题,可以解决,但根据不同情况有不同的处理方法。     第一种,上面有经纬度外框,图片是矩形,但是没有地理信息。 通过图框的两个角的坐标确定范围,分别是左上(140°E,30°N);右下(150°W,30°N) 解决方

树木_xzw的博客 2万+

尚硅谷JAVA基础笔记吐血整理

尚硅谷JAVA基础课程笔记整理(从面向对象开始)

weixin_45371456的博客 1万+

超级详细!!!新手使用AutoDL跑深度学习(MixVPR项目)的学习记录

新手第一次在AutoDL上跑深度学习的实验,遇到一些问题,简单记录一下。如果大家发现问题,欢迎和我讨论。

weixin_45152283的博客 5万+

从网格剖分到结果外推:一文拆解HFSS快速扫频(Fast Sweep)的底层逻辑与性能调优

本文深入解析了HFSS快速扫频(Fast Sweep)技术的底层逻辑与性能调优方法。通过ALPS算法实现频带外推,快速扫频相比离散扫频和插值扫频能提升3-5倍计算效率,特别适用于天线阵列、微波滤波器等宽频带分析场景。文章详细介绍了算法架构、参数优化策略及工程实践中的精度保障机制,帮助工程师高效完成电磁仿真。

weixin_28693447的博客 92

Java学习day07:面向对象三大特性之一:封装

Java学习day07:面向对象三大特性之一:封装

LF__plus的博客 547

基于FreeRTOS与MQTT的物联网技术应用系列——步进电机控制(三)SD卡驱动、FatFS等的移植和ini配置文件读取的实现

本文实现了基于STM32F107VC的金牛开发板的基于SPI模式的SD卡驱动和FatFS的移植,以及利用minini库对ini配置信息文件进行读取。

sqshining的专栏 2137

Java基础Day07

学习目标 1.能够知道类和对象的关系 2.能够完成类的定义及使用 3.能够知道对象在内存中的初始化过程 4.能够知道局部变量和成员变量的区别 5.能够知道private关键字的特点 6.能够知道this关键字的作用 7.能够知道构造方法的格式和注意事项 8.能够完成一个标准类代码的编写及测试 今天的内容可能会有点抽象,但希望大家能够理解面向对象,Java语言是全面象对象的。 想要思维导图笔记的也...

Riven_x的博客 1673

1.2、基于卷积神经网络(CNN)的车牌自动识别系统(matlab)

基于卷积神经网络(CNN)的车牌自动识别系统(matlab)

XU157303764的博客 2911

【WRFDA安装第一期】安装 WRFDA 以运行 3DVAR/4DVAR数据同化

【WRFDA安装第一期】安装 WRFDA 以运行 3DVAR/4DVAR数据同化

WW、forever的博客 1895

java基础学习笔记Day06+Day07(黑马磊哥课程)

就是用类设计对象处理某一个事物的数据时,应该把。,以及处理这些数据的方法,修饰的成员变量name。

wangwangxiaohai的博客 350

Unity 热更新技术 | (二) AssetBundle - 完整系列教程学习

开始学习热更新方面系列知识,就从这一篇开始吧! 本系列教程 会从热更新基本概念出发,详细介绍热更新相关的全套知识点。 如热更新技术基本原理、热更新主流方案、AssetBundle系列教程、Lua语言编程、Lua与Unity交互教程、Xlua框架使用、热更新实战教程等方面。 热更新作为一个开发者必备技能,如果想学习的话,可以从现在开始了哦~ 接下来从 AssetBundle - 完整系列教程学习 开始学习吧!

努力前行,总会成为自己心中的那道光 1万+

java基础笔记系列_Day07

面向对象 一、类 1.1 概述 面向对象: 优点:耦合度低,扩展能力强,更容易解决现实问题中更复杂的业务逻辑,组件复用性强 缺点:前期投入成本高,需要进行独立体的抽取,大量的系统分析与设计 面向对象三大特征: 封装 继承 多态 面向对象开发流程 面向对象的分析 Object-Oriented Analysis OOA 面向对象的设计 Object-Oriented Design ...

weixin_45928582的博客 184

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java笔记Day_07

方法: 封装了特定功能的代码块1.形式参数[形参]:在定义方法时, 要求调用者传递的参数//实际上做运算的参数[数据](形参: 是对调用者启动方法的要求)2..实际参数[实参]:在调用方法时, 真实传递给方法的数据//实参: 是真实的数据, 是实际参与运算的(实参: 是调用者真实传递给方法的数据)有形参就必须有实参, 无形参就不可以有实参要什么给什么 -->方法的形参要什么, 调用者启动方法时就需要传递什么返回值:调用完方法时,得到的结果;//返回值是一个具体的数据。

qq_53327161的博客 997

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java基础进阶学习笔记Day07(黑马磊哥课程)

Data 注解包含了 无参构造器 + set + get + toString + hashCode + equals。如果使用了@AllArgsConstructor,就要手动加上@NoArgsConstructor。,只是Set集合中的元素只要key数据,不要value数据而已。(插入顺序就是遍历顺序),不重复,无索引。可变参数在方法内部本质就是一个。只能支持对List集合进行排序。

wangwangxiaohai的博客 482

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

java学习笔记day07 成员变量与局部变量、形式参数、匿名对象、封装、private、this、构造方法、类详细讲解、static

java学习笔记day07 1.成员变量和局部变量的区别 定义变量的注意事项 2.形式参数⭐ 【P175】 形参是个类名,要的其实是一个对象 3.匿名对象(了解即可) 4.封装 class Student { String name;//姓名 private int age;//年龄 privat使年龄age不能被直接引用,这样用户就只能通过我们给的方法来给age进行赋值了 public void show() { System.out.pr

时雨的博客 419

JavaSE笔记 30天学Java打卡 Day07

链接🔗:【零基础 快速学Java】韩顺平 零基础30天学会Java现在有两个程序员共同开发一个java项目,程序员叫xiaoming,希望定义一个类取名Dog,程序员xiaoqiang也想定义一个类也叫Dog。怎么办?包。 包的本质分析(原理) 包的本质,实际上就是创建不同的文件夹/目录来保存类文件 包的命名 命名规则 只能包含数字、字母、下划线、小圆点,但不能用数字开头,不能是关键字或保留字一般是小写字母 + 小圆点一般是com.公司名.项目名.业务模块名一个包下,包含很多的类,java 中常用的包有:

weixin_46546415的博客 1025

Java自学笔记Day07

day07 面向对象 面向对象思想概述 /* A: 面向过程思想概述: *第一步 *第二步; B: 面向对象思想概述: *找对象(第一步,第二步) C: 举例说明 买煎饼果子 ​ D:面向对象的思想特点: a: 一种更符合我们思想习惯的思想(懒人思想); b: 可以将复杂的事情简单化; c:将我们从执行者变成指挥者;角色发生转换; E: 面向对象开...

weixin_43597282的博客 226

[JavaSE基础笔记]Day07 类和对象,封装

目录 概述 类 创建类 测试类 对象的内存变换 this 构造方法(构造器) private 封装 JavaBean 其他 概述 面向对象:OOP,以对象为中心的编程思想,通过指挥对象实现具体功能 面向过程:POP,以过程为中心的编程思想,功能的每一步都是自己实现 将我们从执行者转变为指挥者,将复杂的问题简单化 对象:客观存在的具体事物 面向对象思想是基于面向过程演变而来,即指挥的对象,其内部也...

asd532157097的博客 189

java学习笔记day07-面向对象基础-构造方法

Day07 面向对象基础 面向对象和面向过程的思想对比 面向过程编程是一种以过程为中心的编程思想,实现功能的每一步,都是自己实现的; 面向对象是一种以对象为中心的编程思想,通过指挥对象实现具体的功能 面向对象思想小结: 客观存在的任何一种事务,都可以看作为程序中的对象 使用面向对象思想可以将复杂的问题简单化 将我们从执行者的位置,变成了指挥者 类和对象 类是对现实生活中一类具有共同属性和行为的事物的抽象 属性:该事物的各种特征 行为:该事物存在的功能(能够做的事情) 类和对象的

在每个领域闪耀 1278

JAVA学习笔记-JAVA基础语法-DAY06-类和对象、封装、构造方法

是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。就是该事物的状态信息。就是该事物能够做什么。是一类事物的具体体现。对象是类的一个实例(对象并不是找个女朋友),必然具备该类事物的属性和行为。类与对象的关系类是对一类事物的描述,是抽象的。对象是一类事物的实例,是具体的。类是对象的模板,对象是类的实体。事物的状态信息。事物能够做什么。对应事物的属性对应事物的行为//成员变量//成员方法就是定义类的成员,包括成员变量和成员方法。

zzq393109417的博客 1242

尚硅谷Java基础笔记day00-day07

(个人)尚硅谷Java基础笔记

wowYuXuan808的博客 370

day07-1学习过程笔记

成员变量和局部变量的区别;类作形式参数;匿名对象;封装思想、getset方法的由来;private;this;构造方法;类的标准组成

weixin_44055622的博客 162

Java入门学习笔记 -- Day5

Java面向对象编程基础摘要 本文介绍了Java面向对象编程(OOP)的基础知识,主要包括三个核心概念:对象、类和封装。对象是一种特殊的数据结构,用于存储事物的数据;类作为对象的模板,通过new关键字创建实例。文章通过明星和学生案例展示了如何定义类和创建对象,并讲解了构造器的特点(初始化对象属性)和this关键字的作用(引用当前对象)。最后介绍了封装的概念,即合理隐藏内部实现并暴露必要接口,这是OOP三大特征之一。这些基础概念为后续学习继承和多态打下基础。

qq_51915532的博客 955

Java学习之随堂笔记系列——day07

核心内容:面向对象,这是java中最重要的一种编程思想。 1、什么是面向对象? 生活中:假设还没有吃早餐,饿了。 面向过程:强调的是过程,过程中每一步都要亲力亲为。 1、做饭 1.1 淘米 1.2 将米放到电饭锅中 1.3 加适量的水 1.4 盖上盖子 ...

落雨心星 297
上一篇: Java基础笔记:Day_06 类、构造器和面向对象
下一篇: Java基础笔记:Day_08 继承与多态
Panda不姓潘
博客等级 码龄8年 152粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值