首页 > 编程语言 >Java学习笔记(九)

Java学习笔记(九)

时间:2023-05-04 20:12:48浏览次数:42  
标签:Java 变量 对象 代码 数据类型 笔记 学习 关键字 构造函数

1、代理模式的概念

可以为其它对象提供一种代理以控制对这个对象的访问,屏蔽对真实角色的直接访问。

2、为什么要重写toString()方法?

默认情况下,toString()方法返回的字符串是由对象的类名、“@”符号和对象的哈希码组成的。我们需要重写toString()方法,以便返回更有意义和有用的字符串表示形式。

3、this与super的区别

this关键字

this关键字代表当前对象,可以用于以下情况:

(1)区分成员变量和局部变量:如果在方法中定义了一个与成员变量同名的局部变量,可以使用this关键字来引用成员变量。

(2)调用当前对象的其他方法:在一个方法中调用当前对象的其他方法时,可以使用this关键字来引用当前对象。

(3)在构造函数中调用其他构造函数:在一个构造函数中调用同一个类的其他构造函数时,可以使用this关键字来引用其他构造函数。

super关键字

super关键字代表父类对象,可以用于以下情况:

(1)调用父类的构造函数:在子类的构造函数中,可以使用super关键字调用父类的构造函数。

(2)调用父类的成员变量或方法:在子类中可以使用super关键字来引用父类中的成员变量或方法。

4、在静态方法中是否可用this来调用本类的类方法?

不可以,静态方法不属于任何一个对象,所以不能够使用this关键字。

5、请谈谈你对代码块的理解

代码块(Block)是一组用花括号“{}”括起来的语句,它可以看作是一个独立的作用域,其中定义的变量只在该作用域内有效。

代码块的作用:对Java类或对象进行初始化

分类:

(1)局部代码块

局部代码块是定义在方法中的代码块,用于限制变量的作用范围,减少变量的生命周期,以便释放内存。

(2)初始化代码块

初始化代码块是定义在类中,没有static修饰符和方法名的代码块,用于对成员变量进行初始化。

(3)静态代码块

静态代码块是定义在类中,有static修饰符和没有方法名的代码块,用于对静态成员变量进行初始化。

6、请谈谈你对变量的理解

变量是存储数据值得容器。为了使数据的在程序中合法存在,所以我们使用变量。声明变量语法格式:数据类型  变量名称。比如:int a

7、请写出空指针异常的名字(英文),并描述其产生的原因

NullPointerException

它的产生原因是当程序试图访问一个空对象的属性或调用一个空对象的方法时,就会发生空指针异常。

为了避免空指针异常的发生,我们需要在使用对象之前,先对其进行非空判断,或者在定义对象时就进行初始化或赋值。

8、基本数据类型和引用数据类型有什么区别?

(1)存储方式不同

基本数据类型存储在栈(stack)中,而引用数据类型存储在堆(heap)中。

(2)初始化方式不同

基本数据类型在定义时会自动初始化为默认值,例如int类型的默认值为0,boolean类型的默认值为false。而引用数据类型在定义时默认为null,

(3)复制方式不同

基本数据类型在进行赋值或传递参数时,会复制它们的值到新的变量或参数中。而引用数据类型在进行赋值或传递参数时,会复制它们的引用(内存地址)到新的变量或参数中,即新的变量或参数会指向同一个对象。

(4)基本数据类型可以使用“==”和“!=”运算符进行比较,表示比较它们的值是否相等。而引用数据类型使用“==”和“!=”运算符比较的是它们的引用(内存地址)是否相等,即它们是否指向同一个对象。

标签:Java,变量,对象,代码,数据类型,笔记,学习,关键字,构造函数
From: https://www.cnblogs.com/wgh123/p/17368939.html

相关文章

  • Java练手项目(尚硅谷的),不涉及框架,数据库等。
    软件:idea我是先建立了一个空白的项目,自己创建的src包和其下面的包。问题一:建立包之后发现格式为src.com.tjp.bean没办法建立其他与bean同级的servicetestutilsview等。只允许继续建立bean的子包。解决:这是因为idea自动会折叠空白包。(不同版本的idea可能和我的位置不太一......
  • Git相关学习3(主要为分支、解决冲突)
    分支基础命令有关分支的基础命令解决冲突分支使用流程......
  • MarkDown学习
    标题#+空格+标题名字几个#就是几级标题字体粗体粗体两边各加两个*Hello,Word!斜体两边各加一个*Hello,Word!斜体加粗两边各加三个*Hello,Word!删除线两边各·加两个~Hello,Word!引用用一个大于号表示>该资源引用自狂神说Java分割线分割线可以用三个-减......
  • vue-esign 学习笔记
    1注意事项最新版是1.1.4,我们项目组用的是1.1.0。从npmjs可以看出,两个版本中间的版本都是不可用的,下载量为0.除此之外还可以参考的类似工具:https://www.npmjs.com/package/vue-esignaturevue-esignaturehttps://www.npmjs.com/package/vue3-esignvue3-esign2链接地址http......
  • JAVA中字符串的常用方法
    JAVA中字符串的常用方法字符串不能改变,创建后就无法更改了创建字符串的两种方式直接赋值new的方式获取一个字符串对象 构造方法构造方法说明publicString()创建空白字符串,不包含任何内容publicString(StringOriginal)根据传入的字符串,创建字符串对象......
  • Git的相关学习2(要点:git常用指令)
    git的主要工作流程获取本地仓库git常用指令需要知道的是,刚才我们创建好的一个本地仓库,里面的文件除了.git文件夹,其余的均为工作目录;从工作区提交到暂存区:gitadd.(表示提交到所有的文件里面去)从暂存区提交到本地仓库(需要加入相应注释):gitcommit-m"注释内容"gitst......
  • FFT&NTT学习笔记
    概念多项式乘法时,我们发现暴力乘十分缓慢,但是点值乘十分快速。考虑求\(A\)和\(B\)的卷积。一个\(n\)次多项式可以被\(n+1\)个点确定。设多项式\(A(x)\)的系数为\((a_0,a_1,\cdots,a_n)\)对其奇偶分类得\(A(x)=\sum\limitsa_{2i}*x^{2i}+\suma_{2i+1}*x^{2i+1}\)......
  • 学习笔记:矩阵快速幂
    1.矩阵乘法设矩阵有\(H\)行,\(L\)列,则两个矩阵\(MatA,MatB\)进行乘法,需要满足\(MatA.L=MatB.H\)。则结果矩阵\(MatR_{i,j}=\sum\limits^{n}_{z=1}MatA_{i,z}*MatB_{z,j}\)。性质:结合律,但不满足交换律。matoperator*(mata,matb){ matc; memset(c.mat,0,sizeof(c.......
  • 树链剖分学习笔记
    一棵树,支持:路径加单点查询一般树上链的问题使用树链剖分解决。重链剖分前置知识LCA,线段树定义重儿子:所有儿子中子树最大的儿子为重儿子重边:重儿子之间的连边重链:若干重儿子连成的链性质一棵树可以被剖成若干重链。优先遍历重儿子,所有重链的dfs序连续。重链数量不......
  • 生成函数学习笔记
    概念序列的母函数(生成函数)是一种形式幂级数。其每一项的系数可以提供关于这个序列的信息,使用母函数解决问题。如:序列\(a\)的生成函数为\(G(x)=\sum\limits_{i=1}^{n}a_if_i(x)\)。其中\(f_i(x)\)是无实际意义的,具体取值看题目要求。但有一些一般取值。一般生成函数令\(f......