首页 > 编程语言 >Java整理

Java整理

时间:2023-07-28 18:37:54浏览次数:40  
标签:Java image flowus https 整理 preview 方法 png

1.String类的特点

  • Java程序中所有双引号字符串,都是String这个类的对象
  • 字符串一但被创建,就不可修改,字符串内容不可改变
    如果想要更改,创建新的对象替换 String s1 = "abc"; s1 = "bcd"
- String 字符串虽然不可改变,但是可以共享

    字符串常量池:当我们使用双引号创建对象,会在常量池中检查是否存在该数据

      不存在:创建

      存在:共享

    ```Plain Text
String s1 ="abc";
String s2 ="abc";
System.out.println(s1 == s2) # ==判断地址
结果为true
![image.png](https://flowus.cn/preview/b3846c23-b319-4b32-bcd4-c836421dc105)

2.

![image.png](https://flowus.cn/preview/d58a2455-3332-4fe2-be78-ab9de090e303)

new 中的abc是从常量池中拷贝过去的

内存地址不同

创建了两个对象

3.

![image.png](https://flowus.cn/preview/686265a4-a44e-4cbb-be5f-62d0df545787)

使用+号拼接,系统会自动创建一个StringBuilder对象,在该对象中进行拼接,拼接完之后,使用toString方法做类型的转换,转换成String类型。

4.

![image.png](https://flowus.cn/preview/4d6e56f4-97c5-4d32-b298-71a80d18141a)

有常量优化机制,自动拼接。

5.常用方法

2.集合、数组

1.集合:不用管长度

ArrayList<类型> list = new ArrayLIst<>()

2.数组:确定长度

静态初始化: int[] array={ }

动态初始化: int[] array = new int[长度]

3.static

修饰符,可以修饰成员变量、成员方法

如果你的成员变量需要被所有对象共享,就加static

static 成员方法,常用于工具类

特点:

1.被类的所有对象所共享

2.多了一种调用方式,可以通过类名进行调用

3.随着类的加载而加载,优先于对象存在

内存解析

![image.png](https://flowus.cn/preview/00129856-f457-4167-a616-86608f329df4)

内存空间

![image.png](https://flowus.cn/preview/98e2af63-7b76-4bf9-8236-77452d7929c5)

4.继承 extends

1.继承:让类与类之间产生关系(子父类关系),子类可以直接使用父类中非私有的成员。

2.什么时候使用继承:当类与类之间存在相同的内容,并且产生了is-a的关系。

3.继承中的成员访问特点:

- 成员变量

  就近原则

  this:调用被雷成员

  super:调用父类成员

  ![image.png](https://flowus.cn/preview/5010d1d3-bd79-467b-af45-af5cacfd4f6e)

- 成员方法 

  子父类中,出现了方法声明一摸一样的方法(方法名、参数、返回值)

  优先使用子类的方法,对父类的方法,进行了重写

  ![image.png](https://flowus.cn/preview/7605ac65-b0e7-4292-8bbc-f6d22ab216f2)

  方法重写 @Override 对父类的方法进行修改和增强

  私有的方法不能重写,权限要大于或等于父类权限

  5.继承特点

  ![image.png](https://flowus.cn/preview/14e642f4-771c-44ac-ac58-7c0b76726a2d)

一个子类只能有一个父类,只支持单继承,不支持多继承

c可以继承b,b可以继承a,支持多层集成

6.权限

  ![image.png](https://flowus.cn/preview/2ef92c65-2d4a-4502-b8e2-e98875c9a521)

7.内存空间

8.案例

![image.png](https://flowus.cn/preview/7a7960f2-dfa0-4289-b9b3-762ac6e93b37)

5. final

final: 修饰符,可用于修饰方法,类,变量

- 修饰方法:表明该方法时最终方法,不能被重写 

- 修饰类:表明该类是最终类,不能被继承

- 修饰变量:表明该变量是最终变量,不能被赋值

6.abstract 抽象类 (对事物做抽象,描述事物)

抽象类:特殊的父类

内部允许编写抽象方法

抽象方法:

当我们将共性的方法,抽取到父类之后,发现在父类中无法给出具体的描述,而且这个方法,子类必须有,就可以设计为抽象方法。

子类必须实现父类的所有抽象方法。

注意:

  • 抽象类不能实例化(不能创建对象)
  • 抽象类存在构造方法
  • 抽象类中可以存在普通方法
  • 抽象类的子类
  • 要么重写所有抽象方法
  • 要么是抽象类

7.接口 interface (对行为抽象,制定规则)

接口:体现的思想是对规则的声明

Java中的接口更多体现的是堆行为的抽象

类实现接口 implement

重写所有抽象方法

接口中的成员特点:

- 成员变量

  只能是常量,默认修饰符 public static final

- 成员方法

  只能是抽象方法,默认修饰符public abstract

类和接口之间关系:

- 类和类

  继承关系,只能单继承,可以多层继承

- 类和接口

  实现关系,可以单实现,也可以多实现,还可以在继承一个类同时实现多个接口

- 接口和接口

  继承关系,可以单继承,也可以多继承

![image.png](https://flowus.cn/preview/f550b744-2dbc-406a-a612-a86c758312e1)

8. 方法重载

方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。方法重载通常用于创建完成一组任务相似但参数的类型或参数的个数或参数的顺序不同的方法。 [1] Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同。调用方法时通过传递给它们的不同个数和类型的参数,以及传入参数的顺序来决定具体使用哪个方法。

9.多进程

  • 程序:为完成特定任务,用某种语言编写的一组指令的集合,一段静态的代码。
  • 进程:程序的一次执行过程,或是正在内存中运行的应用程序,如:运行中的qq。
  • 每个进程都有一个独立的内存空间
  • 程序是静态的,进程是动态的
  • 操作系统调度和分配资源的最小单位
  • 线程:进程可进一步细分为线程,是程序内部一条执行路径,一个进程至少有一个线程
  • cpu调度和执行的最小单位
  • 并行:两个或多个事件在同一时刻发生。在同一时刻内,有多条指令在多个CPU上同时执行(多个人同时做不同的事情)
  • 并发:两个或多个事件在同一时间段内发生。在一时间段内,有多条指令在单个cpu上快速轮换交替

1.线程调度策略

  • 分时调度:所有线程轮流使用CPU
  • 抢占式调度:优先级高的线程大概率使用CPU

10.static修饰内部类

static不能修饰普通类,但可以修饰内部类。原因如下:

static修饰的东西被我们成为类成员,它会随着类的加载而加载,比如:静态代码块,静态成员,静态方法(这里只是加载,并没有调用)等等。若把一个Class文件中的外部类设为static,那目的何在呢?难道让这个类随着应用的启动而加载吗?如果我在这次使用过程中根本没有使用过这个类,那么是不是就会浪费内存。这样来说设计不合理,总而言之,设计不合理的地方,Java是不会让它存在的。

为什么内部类可以使用static修饰呢,因为内部类算是类的成员了,如果我们没有使用静态来修饰,那么我们在创建内部类的时候就需要先有一个外部类的对象,如果我们一直在使用内部类,那么内存中就会一直存在外部类的引用,而我们有时候只需要使用内部类,不需要外部类,那么还是会浪费内存,甚至会造成内存溢出。使用static修饰内部类之后,内部类在创建对象时就不需要有外部类对象的引用了。

标签:Java,image,flowus,https,整理,preview,方法,png
From: https://blog.51cto.com/u_16199733/6886044

相关文章

  • android与PC,C#与Java 利用protob…
    protobuf是什么? Protocolbuffers是一种编码方法构造的一种有效而可扩展的格式的数据。谷歌使用其内部几乎RPC协议和文件格式的所有协议缓冲区。参考文档http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/overview.html  API的 参考文档 ......
  • 如何使用Proxy模式及Java内建的动态代理机制
    http://zhangjunhd.blog.51cto.com/113473/699961.Proxy模式代理模式支持将某些操作从实际的对象中分离出来,通过它的代理类提供处理。这样便于修改和管理这些特定的操作。下面示例一个代理模式的实现。<!--[if!vml]--><!--[endif]--><<interfa......
  • Java 比较两个日期的方法
    三种方法分别是:1)byUsingclassicCompareTomethodofDateclass.2)byusingequals(),before()andaftermethodofDateclass.3)byusingequals(),before()andaftermethodofCalendarclassinJava.标签:<无>代码片段(2)......
  • Java 获取对象的属性及属性值
    获取属性名称:/***获取属性名数组**@paramo对象*@return属性名称*/privateString[]getFiledName(Objecto){Field[]fields=o.getClass().getSuperclass().getDeclaredFields();String[]fieldNames=newString[fields.length];for(inti=0;i<......
  • java——虚拟机、线程
    java虚拟机:是一台想象中的机器,有自己想象的硬件(处理器、堆栈、寄存器等)以及相应的指令系统。生命周期:当执行java程序时,虚拟机开始运行,程序结束虚拟机停止。同一台计算机每多运行一个程序,就会多运行一个虚拟机。虚拟机开始于main()方法。java虚拟机的体系结构:......
  • java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet
    环境信息:JDK17、Tomcat10问题原因我这里编译,打包都是好的,但是一运行发现就报错。错误的原因是Tomcat10里也自带了一些lib包,可以打开Tomcat下lib文件夹,这又涉及到了包的加载顺序了一打开发现Tomcat里的是 JakartaEE,我Maven里引用的还是JavaEE导致的。JavaEE的servlet......
  • 学习Java的第8天
    数据拓展publicclassDemo03{publicstaticvoidmain(String[]args){//*整数拓展进制二进制0b**十进制八进制**0**十六进制**0x**inti=10;inti2=010;//**八进制0**inti3=0x10;//**十六进制0x0~9A~F16**System.out.println(i);System.out......
  • Java学习1
    java学习01简单写写学习期间不知道or感兴趣的一些东西计算机相关前置知识计算机结构系统软件DOS(DiskOperatingSystem)WindowsLinuxUnix,Mac,Android,IOS...windows快捷键关闭窗口 ALT+F4永久删除文件Shift+Delete快捷指令win+R打开我的电......
  • TestNG 使 Java 单元测试轻而易举
    http://www.ibm.com/developerworks/cn/java/j-testng/在每个现代软件包的构造阶段,测试这一实践都扮演着中心角色。过去那种先编写代码,然后有空的时候再测试(或者根本不测试)的日子已经一去不返,因为大多数开发人员现在认识到需要采用编码和测试彼此交织、同步推进的软件方法论,以便尽......
  • java多线程学习-java.util.concurrent详解
    java多线程学习-java.util.concurrent详解(一)Latch/Barrier   Java1.5提供了一个非常高效实用的多线程包:java.util.concurrent,提供了大量高级工具,可以帮助开发者编写高效、易维护、结构清晰的Java多线程程序。从这篇blog起,我将跟大家一起共同学习这些新的Java多线......