重生之我要精通JAVA--第二周笔记

2024-04-28 18:44

本文主要是介绍重生之我要精通JAVA--第二周笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 方法
      • 注意事项
      • 方法的重载
      • 数据类型
        • 基本数据类型
        • 引用数据类型
    • 二维数组
      • 静态初始化
      • 动态初始化
    • 面向对象
      • 类和对象
        • 如何定义类
        • 如何得到类的对象
        • 定义类的补充注意事项
        • 对象的成员变量的默认值规则
      • 面向对象三大特征
        • 封装
          • private关键字
      • 就近原则和this关键字
      • 构造方法
        • 概述
        • 作用
        • 有几种,各自作用是什么
        • 注意事项
        • 标准的JavaBean类
      • 成员变量和局部变量的区别
    • 字符串
      • API
      • String概述
        • 注意点
        • 创建String对象的两种方式
      • Java内存模型
      • 字符串比较
        • 举例
        • 比较
      • StringBuilder
        • StringBuilder常用方法
        • 应用场景
      • StringJoiner
        • StringJoiner构造方法
        • StringJoiner成员方法
    • 集合
      • 集合和数组的对比
      • ArrayList成员方法
    • static
      • 静态变量
      • 静态方法
      • 工具类
      • 注意事项
    • 重新认识main方法
    • 继承
      • 什么时候用继承?
      • 继承的特点
      • 继承中成员变量访问特点
    • 方法的重写
      • 书写格式
      • @Override重写注释
      • 注意事项和要求

方法

方法是程序中最小的执行单元。

方法分为:最简单的方法定义一和调用,带参数的方法定义和调用,带返回值的方法定义和调用。具体内容和C语言类似。

固定格式:

punlib static 返回值类型 方法名 (参数) {方法体;return 返回值;
}

注意事项

  • 方法不调用就不执行
  • 方法与方法之间是平级关系,不能相互嵌套
  • 方法的编写顺序和执行顺序无关
  • 如果返回类型为void,return可以省略或者只写return
  • return下面不能编写代码,因为执行不到,属于无效代码

方法的重载

  • 在同一个类型中,定义了多个同名的方法,这些同名的方法具有同种功能
  • 每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载关系

简单记:同一个类中,方法名相同,参数不同的方法。与返回值无关。(个数不同,类型不同,顺序不同)

数据类型

基本数据类型

​ 数据值是存储才自己的空间中

特点:赋值给其他变量,也是赋的真实的值。

引用数据类型

​ 数据值是存储在其他空间中,自己空间中存储的是地址值。

特点赋值给其他变量,赋的地址值。

int[] arr1 = {1, 2, 3};
int[] arr2 = arr1;

传递引用数据类型时,传递的是地址值,形参的改变,影响实际参数的值

附加:随机数创建: Random r = new Random();

​ int randomIndex = r.nextInt(chs.length);

二维数组

静态初始化

  • 格式:数据类型[] [] 数组名 = new 数据类型[] [] {{元素1,元素2},{元素1,元素2}};
  • 范例:int[] [] arr = new int[] []{{11,22},{33,44}};
  • 简化格式:数据类型[] [] 数组名 = {{元素1,元素2},{元素1,元素2}};

动态初始化

  • 格式:数据类型[] [] 数组名 = new 数据类型[m] [n];
  • 范例:int[] [] arr = new int[2] [3];

面向对象

类和对象

  • 类(设计图):是对象共同特征的描述;
  • 对象:是真实存在的具体东西。

在Java中,必须先设计类,才能获得对象。

如何定义类
public class 类名 {1、成员变量(代表属性,一般是名词)2、成员方法(代表行为,一般是动词)3、构造器4、代码块5、内部类
}
如何得到类的对象
//类名 对象名 = new 类名();
Phone p = new Phone();
定义类的补充注意事项
  • 用来描述一类事物的类,专业叫做:Javabean类。在Javabean类中,是不写main方法的。
  • 在之前编写的main方法的类,叫做测试类。我们可以在测试类中创建javabean类的对象并进行赋值调用。
  • 类名首字母建议大写,需要见名知意,驼峰模式。
  • 一个Java文件中可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。实际开发中建议还是一个文件定义一个class类。
  • 成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值;一般无需制定初始化值,存在默认值。
对象的成员变量的默认值规则
数据类型明细默认值
byte、short、int、long0
基本类型float、double0.0
booleanfalse
引用类型类、接口、数组、Stringnull

面向对象三大特征

  1. 封装(Encapsulation):封装是将对象的状态和行为结合在一起,并对外部隐藏对象的内部实现细节的过程。通过封装,对象的内部数据只能通过对象的方法来访问,从而保证了数据的安全性和一致性,同时也降低了对象之间的耦合度。
  2. 继承(Inheritance):继承是一种机制,允许一个类(子类)继承另一个类(父类)的属性和方法。子类可以使用父类的属性和方法,同时可以在不修改父类的情况下,扩展或修改父类的行为。通过继承,可以实现代码的重用和扩展,提高了代码的可维护性和可扩展性。
  3. 多态(Polymorphism):多态是指同一个方法调用可以在不同的对象上有不同的行为。在Java中,多态可以通过方法重写(override)和方法重载(overload)来实现。方法重写是指子类重新定义父类的方法,以实现特定的行为;方法重载是指在同一个类中,可以定义多个同名方法,但参数列表不同。多态提高了代码的灵活性和可扩展性,使得代码更易于理解和维护。
封装
  • 对象代表什么,就得封装对应的数据,并提供数据对应的行为
private关键字
  • 是一个权限修饰符
  • 可以修饰成员(成员变量和成员方法)
  • 被private修饰的成员只能在本类中才能访问

就近原则和this关键字

this直接使用成员变量。

public class GirlFriend {private int age;public void method(){int age = 10;//就近System.out.println(age);//就近System.out.println(this.age);}
}

构造方法

概述
  • 创造对象的时候,虚拟机会自动调用构造方法,作用是给成员变量进行初始化的
作用
  • 创造对象的时候,由虚拟机自动调用,给成员变量进行初始化
有几种,各自作用是什么
  • 无参数构造方法:初始化对象时,成员变量的数据均采用默认值
  • 有参数构造方法:初始化对象时,同时可以为对象进行赋值
注意事项
  • 任何类定义出来,默认自带无参数构造器,写不写都有
  • 一旦定义了有参数构造器,无参数构造器就没有了,需要自己写
  • 建议任何时候都写上空参和带全部参数的构造方法
标准的JavaBean类
  1. 类名需要见名知意
  2. 成员变量使用private修饰
  3. 提供至少两个构造方法
    • 无参构造方法
    • 带全部参数的构造方法
  4. 成员方法
    • 提供每一个成员变量对应的setXXX()/getXXX()
    • 如果还有其他行为,也需要写上

成员变量和局部变量的区别

区别成员变量局部变量
类中位置不同类中,方法外方法内、方法声明上
初始化值不同有默认初始化值没有,使用之前需要完成赋值
内存位置不同堆内存栈内存
生命周期不同随着对象创建而存在,随着对象消失而消失随着方法的调用而存在,随着方法的运行结束而消失
作用域整个类中有效当前方法中有效

字符串

API

API:应用程序编程接口

简单理解:API就是别人已经写好的东西,我们不需要自己编写,直接使用即可。

String概述

​ java.lang.String类代表字符串,Java程序中所有字符串文字都为此类的对象。

注意点

字符串内容是不会发生改变的,它的对象在创建后不能被更改。

创建String对象的两种方式
  1. 直接赋值:String name = “xiaoduyyy”;

  2. new:

    构造方法说明
    public String()创建空白字符串,不含任何内容
    public String(String original)根据传入的字符串,创建字符串对象
    public String(char[] chs)根据字符数组,创建字符串对象
    public String(byte[] chs)根据字节数组,创建字符串对象

Java内存模型

当使用双引号进行直接赋值的时候,系统会检查该字符串在串池中是否存在,如果不存在则创建新的,如果存在则复用。

字符串比较

举例
String s1 = new String("abc");//记录堆里的地址
String s2 = "abc";//记录串池中的地址
System.out.println(s1 == s2);//false
比较
  • boolean equals方法(要比较的字符串)---------------------------完全一样结果才是true,否则为false
  • boolean equalsIgnoreCase(要比较的字符串)--------------------忽略大小写的比较

charAt( )--------------用来获取字符串中指定位置的字符

String replace(旧值,新值) 替换

StringBuilder

StringBuilder常用方法
方法名说明
public StringBuilder append (任意类型)添加数据,并返回对象本身
public StringBuilder reverse()反转容器中的内容
public int length()返回长度(字符出现的个数)
public String toString()通过toString()就可以说实现把StringBuilder转换为String
public StringBuilder deleteCharAt(位置)删除该位置的字符
  • 因为StringBuilder是Java已经写好的类,java在底层对他做了一些特殊处理,打印对象不是地址值而是属性值。
应用场景
  1. 字符串的拼接
  2. 字符串的反转

StringJoiner

StringJoiner构造方法
方法名说明
public StringJoiner (间隔符号)创建一个StringJoiner对象,制定拼接时的间隔符号
public StringJoiner (间隔符号,开始符号,结束符号)创建一个StringJoiner对象,制定拼接时的间隔符号、开始符号、结束符号
StringJoiner成员方法
方法名说明
public StringJoiner add (新添加的内容)添加数据,并返回对象本身
public int length()返回长度(字符出现的个数)
public String toString()返回一个字符串(该字符串就是拼接之后的结果)

集合

集合和数组的对比

  • 数组长度固定,集合长度可变
  • 数组可以存储基本数据类型,可以存引用数据类型,集合可以存引用数据类型,而存基本数据类型就需要包装类

ArrayList成员方法

方法名说明
boolean add(E e)添加元素,返回值表示是否添加成功
boolean remove(E e)删除指定元素,返回值表示是否删除成功
E remove(int index)删除指定索引元素,返回被删除的元素
E set(int index,E e)修改指定索引下的元素,返回原来的元素
E get(int index)获取指定索引的元素
int size()集合的长度,也就是集合中元素的个数

static

static表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量。

静态变量

特点:被该类所有对象共享。

调用方式:类名调用(推荐)、对象名调用

静态方法

特点:多用在测试类与工具类中、Javabean类很少用

工具类

  • Javabean类:用来描述一类事物的类。比如Student,Dog等
  • 测试类:用来检查其他类是否书写正确,带有main方法的类,是程序的入口
  • 工具类:不是用来描述一类事物的,而是帮我们做一些事情的类

注意事项

  • 静态方法只能访问静态变量和静态方法
  • 非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法
  • 静态方法中没有this关键字

重新认识main方法

  • public:被JVM调用,访问权限足够大

  • static:被JVM调用,不用创建对象,直接类名访问

    ​ 因为main方法是静态的,所以测试类中的其他方法也是需要静态的

  • void:被JVM调用,不需要给JVM返回值

  • main:一个通用的名称,虽然不是关键字,但是被JVM识别

  • String[] args:以前用于接受键盘录入数据的,现在没用

继承

  • Java中提供一个关键字extends,用这个关键字,我们可以让一个类与另一个类建立起继承关系

    public class Student extends Person{}
    
  • Student称为子类(派生类),Person称为父类(基类或超类)

什么时候用继承?

当类与类之间存在相同(共性)的内容,并满足子类时父类的一种,就可以考虑使用继承来优化代码。

继承的特点

  • Java只支持单继承
  • Java不支持多继承,但支持多层继承
  • Java中所有的类都直接或者间接继承与Object类
  • 子类只能访问父类中非私有的成员

继承中成员变量访问特点

先在局部位置找,本类成员位置找,父类成员位置找,逐级往上。

如果出现了重名:

System.out.println(name);//从局部位置往上找
System.out.println(this.name);//从本类成员位置往上找
System.out.println(super.name);//从父类成员位置往上找

方法的重写

当父类的方法不能满足子类的需求的时候,需要进行方法的重写

书写格式

​ 在体系中,子类出现了和父类中一模一样的方法声明,我们就称子类这个方法是重写的方法。

@Override重写注释

  1. @Override是放在重写后的方法上,校验子类重写是语法是否正确。
  2. 加上注解后如果有红色波浪线,表示语法错误。
  3. 建议重写方法都加@Override注解,代码安全,优雅。

注意事项和要求

  • 重写方法的名称、形参列表必须与父类中的一致
  • 子类重写父类方法时,访问权限子类必须大于等于父类(空着不写<protected<public)
  • 子类重写父类方法时,返回值类型子类必须小于等于父类
  • 建议:重写的方法尽量和父类保持一致
  • 私有方法不能被重写
  • 子类不能重写父类的静态方法,如果重写会报错
  • 只有被添加到虚方法表中的方法才能被重写

已经到底啦!!

这篇关于重生之我要精通JAVA--第二周笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/943975

相关文章

1、什么是 Java 虚拟机?为什么 Java 被称作是“平台无关的编程语言”?

本文为转载,好记性不如烂笔头 1、什么是 Java 虚拟机?为什么 Java 被称作是“平台无关的编程语言”? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。 Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java 虚拟机让这个变为可能,因为它知道底层硬件平

JVM内存结构 —— Java内存模型 ——Java对象模型

注明:转载. JVM内存结构、Java内存模型和Java对象模型,这就是三个截然不同的概念,但是很多人容易弄混。

JVM原理及性能调优

注明:转载文章。好记性不如烂笔头呀~ 一、什么是JVM     JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少

JavaScript-输入输出语句

输出语句 document.write(' 输出的内容 ') 语法:document.write(' 输出的内容') 作用:内容会显示在网页上 如果输出的内容是标签,也会被解析为网页元素 代码: <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="wid

LeetCode算法题:11. 盛最多水的容器(Java)(双指针问题总结)

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 提示: n == height.length2 <= n <= 10^50 <= height[i] <= 10^4 解题思路: 定义两个指针

基于java的超级玛丽游戏的设计与实现(论文 + 源码)

Java的超级玛丽游戏.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89313347 基于java的超级玛丽游戏的设计与实现 摘要 近年来,Java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用。J2SE称为Java标准版或Java标准平台。J2SE提供了标准的SDK开发平台。利用该平台可以开发J

ArcGIS10.X入门实战视频教程(arcgis入门到精通)

点击学习: ArcGIS10.X入门实战视频教程(GIS思维)https://edu.csdn.net/course/detail/4046?utm_source=blog2edu  点击学习: ArcGIS10.X入门实战视频教程(GIS思维)https://edu.csdn.net/course/detail/4046?utm_source=blog2edu

Spring时间触发器

而在Spring里很好的集成了Quartz,在xml文件里面配一下时间就可以自动执行,不需要写一行代码。   Xml代码   <bean id="methodInvokingJobDetail"      class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

微信支付 JAVA实现

微信支付接口文档2.7里的demo实在是看不下去了,错误百出,到网上搜了半天,全部都是把官方文档下下来让你下载,还扣你积分,操蛋。。。   微信支付JAVA 接口 首先下载官方demo,虽然很多有问题,但是很多工具类是可以用的 附上地址:https://mp.weixin.qq.com/paymch/readtemplate?t=mp/business/course2_tmpl

微信支付java版本之JSAPI支付+发送模板消息

目录(?)[-] 工具类公众账号设置代码实现weixin_jspay项目中代码实现3其他接口 1.工具类 工具类见:微信支付JAVA版本之Native付款 2.公众账号设置 3.代码实现 openId:openId为用户与该公众账号之间代表用户的唯一标示 以下类中涉及到生成token,关闭订单接口调用,获