首页 > 编程语言 >Java的杂七杂八(未完成)

Java的杂七杂八(未完成)

时间:2024-07-31 16:41:23浏览次数:10  
标签:调用 Java 形参 杂七杂八 子类 Object 构造 完成 父类

java特点

1、面向对象性: 两大要素:类、对象 三大特征:封装、继承、多态
2、健壮性:去除了c/c++的指针;添加了垃圾回收机制--->但Java依旧可能出现内存的溢出和 泄漏
3、跨平台性:write once , run anywhere “一次编译,到处运行”-->JVM
不同的操作系统需要安装不同的JVM

为什么要配置环境变量

保障文件在任何目录下都可以执行Java的开发指令。比如 javac.exe java.exe
path环境变量: windows操作系统在执行命令时所要搜寻的路径

关键字

定义:被Java语言赋予了特殊含义,用作专门用途的字符串(单词)
特点:Java中的关键字都是小写

保留字

形势上是关键字,但并无实际用途,如goto const

Java中的名称命名规范

包名:多单词组成时,所有字母都要小写
类名、接口名:多单词组成时,所有单词的首字母都要大写
变量名、方法名:第一个单词首字母小写,从第二个单词开始,所有单词首字母大写
常量名:所有字母大写。多单词组成时,每个单词用下划线_隔开

long (8个字节)相较于float(4个字节)算容量小的
使用强转符可能会损失精度
String:字符串

1、String属于引用数据类型中的类,不是基本数据类型
2、使用一对“”(英文引号)引号来引用

关于进制

二进制:0,1。满二进一,以0b或0B开头
十进制:0-9。满十进一
八进制:0-7。满七进一以数字0开头
十六进制:0-9及A-F满十六进一,以0x或0X开头表示,A-F不区分大小写

如何使用Scanner类

1、导包:import java.util.Scanner
2、scanner类的实例化 Scanner scan = new Scanner(System.in);
3、调用Scanner类提供的方法,获取不同类型的变量

  • import java.util.Scanner;
  • public class test {
    • public static void main(String[] args) {
    • Scanner scan = new Scanner(System.in);
    • int age=scan.nextInt();
    • System.out.println("age= "+age);
    • String name=scan.next();
    • System.out.println("name= "+name);
    • double len=scan.nextDouble();
    • System.out.println("length= "+len);
    • double stature=scan.nextDouble();
    • System.out.println("stature= "+stature);
    • }
  • }
说明:
  • 1、不能使用Scanner来获取char类型变量,可以用String型来代替
  • 2、如果要求获取的类型与用户输入的类型不匹配,则报错:InputMisMatchException

数组

概念(what)

多个相同类型的数据按照一定顺序排列的集合,并使用一个名字命名,并通过编号的方式进行统一管理

相关

元素、下标(角标、索引)、数组名、数组长度

数组的声明和初始化

int[] arr1;//声明

静态初始化:数组初始化和数组元素的赋值同时进行

arr1= new int[]{1,2,3,4};//初始化
int[] = new int[]{1,2,3,4};//合并声明和初始化

动态初始化:数组初始化和数组元素的赋值分开进行

String[] arr = new String[5];

不同数组的默认初始化值
  • 整型:0
  • 浮点型:0.0
  • 字符型:’\0’(‘\u0000’)
  • 布尔型:false
  • 引用类型:null(空)
标签

label : for(int i=0;i<n;i++)
{
for(int l=0;l<n;l++)
{
if(l%4==0)
{
break label;
}
}
}

二维数组

图片

随机数的产生

图片

查找

方法一:线型查找(暴力)直接比较是否相等 O(n)
方法二:二分法查找O (log10n)前提:数组有序
图片

arrays类

图片

成员变量与局部变量

相同点:

  1. 声明变量的结构:数据类型 变量名 = 变量值;
  2. 先声明后使用
  3. 都有对应的作用域
    不同点:
  4. 类中声明的位置不同 成员变量:直接声明在类中。局部变量:方法的形参、方法的内部、构造器的内部、构造器的形参、代码块的内部.....
  5. 权限修饰符的使用 成员变量使用前可以用权限修饰符修饰,局部变量不可以 常见的权限修饰符有 public|private|缺省
  6. 针对变量值的说明 成员变量有默认初始化值,局部变量没有默认初始化值,在调用前必须显式初始化
  7. 内存中加载位置不同 成员变量声明在栈空间中 局部变量声明在堆空间中
this关键字的 使用
  1. 理解:当前对象,或当前正在创建的对象
  2. 使用范围:this可以使用在方法或构造器的内部
  3. 可以调用的结构:属性、方法、构造器
  4. 在方法中使用this
  • 我们可以在方法内,调用当前类的属性或方法,属性或方法前可以使用”this.“表明调用的当前对象的属性或方法。通常情况下我们都习惯省略此this关键字
  • 但是如果方法的形参和类的属性名相同了,则必须使用“this.变量”的方式表明我们调用的变量是当前对象的属性,而非形参
  1. 如果在构造器中使用this:
  • 我们可以在当前构造器中,调用当前类的属性或方法,属性或方法前可以使用“this.”的方式,表明调用的是当前对象的属性或方法。通常情况下我们都习惯省略此this关键字
  • 但是如果构造器的形参和类的属性名相同了,则必须使用“this.变量”的方式表明我们调用的变量是当前对象的属性,而非形参
  1. this来调用构造
  • 可以在构造器中使用“this.(形参列表)”方式,调用当前类中的指定构造器
  • 构造器中不可以使用“this.(形参列表)”方式,调用本身的构造器
  • 如果类中声明了n个构造器,则最多可以有n-1个构造器中使用了使用“this.(形参列表)”方式调用其他构造器
  • 规定要求将使用“this.(形参列表)”声明写在首行
  • 一个构造器中最多只有一个声明“this.(形参列表)”方式
super关键字的使用
  1. 为什么需要super?
  • 子类继承父类以后,对父类的方法进行了重写,那么在子类中,是否还可以对父类中被重写的 方法进行调用?

    !!!可以
    
  • 子类继承父类以后,发现子类和父类中定义了同名的属性,是否可以在子类中区分两个同名的 属性?

     !!!可以
    

如何调用?使用super关键字即可 。

super的理解:父类的
super可以调用的结构:属性、方法、构造器
super调属性、方法

子类继承构造器以后,我们就可以在子类的方法或构造器中调用父类的属性或方法。(满足封装性的前提下)调用时使用super.的结构表示调用父类属性或方法

super调用构造器
  1. 子类继承父类时,不会继承父类的构造器。只能通过“super(形参列表)”的方式调用父类指定的构造器。
  2. 规定:“super(形参列表)”,必须声明在构造器的首行。
  3. 我们前面讲过,构造器的首行可以使用“this(形参列表)”的方式,调用本类中的构造器,结合2,结论:在构造器的首行,“this(形参列表)”和“super(形参列表)”只能二选一。
  4. 如果在子类构造器的首行既没有显示调用“this(形参列表)”,也没有显示调用“super(形参列表)”,则子类此构造器默认调用“super()”,即调用父类中空参的构造器。
  5. 由3和4得出结论:子类的任何一个构造器中,要么调用本类中重载的构造器,要么调用父类中的构造器,只能是这两种情况之一。
  6. 由5可得,一个类中声明有n个构造器,最多有n-1个使用“this(形参列表)”,则剩下的那个一定使用“super(形参列表)”

我们在通过子类的构造器构造对象时,一定在调用子类构造器的过程中,直接或间接的调用到父类的构造器。也正因为调用过父类的构造器,我们才会将父类中的属性或方法加载到子类中,供子类对象使用。

Object类

明确:java.lang.Object
任何一个Java类(除Object类)都直接或间接的继承于Object类
Object类被称为Java类的根父类
Object类中声明的结构(属性、方法)就具有通用性
Object类中没有声明属性
Object类提供了一个空参构造器
重点关注:Object类中声明的方法

Object常用方法

常用方法
  • 重点方法:equals() \ toString()
  • 了解方法:clone() \ finalize()
  • 目前不需要关注:getclass() \ hashcode() \ notify() \ notifyAll() \ wait() \ wait(xx) \ wait(xx,yy)
equals()的使用
适用性:

任何引用数据类型都可以使用

java.lang.Object类中equals方法的定义

public boolean equals(Object obj){

 return(this == obj);

}

子类使用说明

自定义的类在没有重写Object中equals()方法的情况下,调用的就是Object类中声明的equals(),比较两个对象的引用地址是否相同。(或比较两个对象是否指向了堆空间中的同一个实体对象)
对于像String、File、Date、和包装类等他们都重写了Object类中的equals()方法,用于比较两个对象的实体内容是否相等。

开发中的使用说明:

实际开发中,针对自定义的类,常常会判断两个对象是否equals(),而此时主要判断是两个对象的属性值是否相等。所以,我们要重写Object类的equals()方法
如何重写:
手动自己实现
调用IDEA自动实现

toString()的使用

Object类中toSring()的定义:

public String toString(){
return getClass().getName() + “@“ +Integer.toHexString(hashcode())

}

开发中使用的场景

平时我们在调用System.out.println()打印对象引用变量时,其实就调用了对象的toString()

子类使用说明:

标签:调用,Java,形参,杂七杂八,子类,Object,构造,完成,父类
From: https://www.cnblogs.com/houguangpu/p/18334949

相关文章

  • Java 方法
    方法一、语句定义格式修饰符返回值类型方法名(参数类型1参数名1,参数类型2参数名2,...){方法的实现逻辑;return返回值;}名词解释修饰符:目前的固定写法publicstatic2hgwaghgwdh7yygxsafe方法名:将来调用者使用功能的名字,可以通过名字调用,方法名要符合标识符的命名规......
  • Java面向对象
    Java面向对象(OOP)学习面向对象的三条主线1、Java中类及类的成员2、面向对象的三大特征3、其他关键字的使用Java中类及类的成员1、成员变量(或属性)2、方法(函数)3、构造器(或构造方法)4、代码块(或初始化块)5、内部类面向对象的三大特征封装性、继承性、多态性(+抽象性)其他关......
  • 计算机Java项目|基于SpringBoot的科研工作量管理系统
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业......
  • java中队列queue操作
    文章目录前景描述方法描述结语前景描述java中的queue(队列)是比较常见的数据结构,它继承于collection(集合),但相对collection,queue提供了一些独有的功能,为特定场景下操作元素提供了便利。queue在java中的顶级接口是Queue,该接口定义了queue的基本操作一共有六个add,offer......
  • 【转型必看】Java到AI,程序员的逆袭秘籍,转行人工智能不再是梦!
    ​随着技术的不断进步,人工智能(AI)已经成为当今科技领域最热门的话题之一。许多开发者开始考虑从传统的软件开发领域,如Java,转向人工智能领域,今天小编和大家一起来探讨Java开发者是否可以转型到人工智能,转型的优势,薪资对比,以及转型所需的知识和学习路线等。01 Java开发者能否转型......
  • 简述JavaFX-Web
    Maven版本22.x<!--https://mvnrepository.com/artifact/org.openjfx/javafx-web--><dependency><groupId>org.openjfx</groupId><artifactId>javafx-web</artifactId><version>22.0.2</version></depe......
  • Java泛型的高级应用
    引言Java泛型是Java5引入的一项强大特性,它允许开发者在编写代码时指定类型参数,从而提高代码的复用性和安全性。尽管泛型在表面上看起来简单,但它的工作原理和高级应用却涉及许多复杂的主题,如类型擦除、类型推断、以及泛型在集合和自定义类中的应用。本文将深入探讨这些高......
  • 注解(Annotation)在Java开发中的应用
    注解(Annotation)在Java开发中的应用引言注解(Annotation)是Java语言的一个特性,用于为代码提供元数据。注解可以被编译器或运行时环境用来处理代码,例如编译时检查、运行时处理等。Spring框架广泛使用了注解来简化配置和提高开发效率。本文将讲解注解的基本概念、如何自定义注......
  • 学习Java的日子 Day60 JSP
    JSP核心技术1.什么是JSPJSP和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。JSP实际上就是ServletJSP这门技术的最大的特点在于,写jsp就像在写html,但它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据......
  • java覆盖率检测-jacoco
    一、Jacoco简介官网地址:https://www.jacoco.org/jacoco/trunk/index.html 一、Jenkins集成jacoco1、安装JaCoCo插件jenkins->系统管理->管理插件在可用插件搜索Jacoco,搜索到安装即可  2、在job中增加“构建后操作”,选择'RecordJaCoCocoveragereport'   3、......