杂七杂八(不定时添加)

  1. 数组的特点:
  • 1)数组属于引用类型的变量。数组的元素,既可以是基本数据类型,也可以 是引用数据类型。
  • 2)创建数组对象会在内存中开辟一整块连续的空间;
  • 3)数组的长度一旦确定,就不能修改;
  • 4)数组是有序排列的。
  1. 数组元素的默认初始化值
  •  > 数组元素是整形:0
    
  •  > 数组元素是浮点型:0.0
    
  •  > 数组元素是char型:0或'\u0000',而非'0'
    
  •  > 数组元素是boolean型:false
    
  •  > 数组元素是引用数据类型:null 
    

原文链接:https://blog.csdn.net/PorkBird/article/details/113694291)
链接: link.

类中属性的使用
*

  • 属性(成员变量) vs 局部变量(成员变量包括类变量(static修饰)和实例变量(不用static修饰))
  • 1.相同点:
  •  1.1 定义变量的格式:数据类型 变量名 = 变量值
    
  •  1.2 先声明,后使用
    
  •  1.3 变量都有其对应的作用域
    
  • 2.不同点:
  •  2.1 在类中声明的位置不同
    
  •  属性:直接定义在类的一对{}内
    
  •  局部变量:声明在方法内、方法形参、构造器形参、构造器内部的变量
    
  •  2.2 关于权限修饰符的不同
    
  •  属性:可以在声明属性时,指明其权限,使用权限修饰符。
    
  •  	常用的权限修饰符:private、public、缺省、protected
    
  •  	目前声明属性时,都使用缺省即可。
    
  •  局部变量:不可以使用权限修饰符。
    
  •  2.3 默认初始化值的情况:
    
  •  属性:类的属性,根据其类型,都有默认初始化值。
    
  •  	整型(byte、short、int、long):0
    
  •  	浮点型(float、double):0.0
    
  •  	字符型(char):0(或‘\u0000’)
    
  •  	布尔型(boolean):false
    
  •  	引用数据类型(类、数组、接口):null
    
  •  局部变量:没有默认初始化值
    
  •  	意味着:在调用局部变量之前,一定要显式赋值。
    
  •  	特别地:形参在调用时,赋值即可。例,45 行
    
  •  2.4 在内存中加载的位置,亦各不相同。
    
  •  属性:加载到堆空间中(非 static)(static修饰的加载到方法区中)
    
  •  局部变量:加载到栈空间
    
  • 堆(Heap),此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。这一点在 Java 虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配。
  • 通常所说的栈(Stack),是指虚拟机栈。虚拟机栈用于存储局部变量等。局部变量表存放了编译期可知长度的各种基本数据类型(boolean、byte、char、short、int、float、long、double)、对象引用(reference 类型,它不等同于对象本身,是对象在堆内存的首地址)。方法执行完,自动释放。
  • 方法区(MethodArea),用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

2.从编译和运行的角度看:

  • 重载,是指允许存在多个同名方法,而这些方法的参数不同。
  • 编译器根据方法不同的参数表,对同名方法的名称做修饰。
  • 对于编译器而言,这些同名方法就成了不同的方法。
  • 它们的调用地址在编译期就绑定了。Java的重载是可以包括父类和子类的,
  • 即子类可以重载父类的同名不同参数的方法。所以:对于重载而言,在方法调用之前,
  • 编译器就已经确定了所要调用的方法,这称为“早绑定”或“静态绑定”;
  • 而对于多态,只有等到方法调用的那一刻,解释运行器才会确定所要调用的具体方法,
  • 这称为“晚绑定”或“动态绑定”。
  • 引用一句Bruce Eckel的话:“不要犯傻,如果它不是晚绑定,它就不是多态。”

  • main():由于 Java 虚拟机需要调用类的 main()方法,所以该方法的访问权限必须是 public,又因为 Java 虚拟机在执行 main()方法时不必创建对象,所以该方法必须是 static 的,该方法接收一个 String 类型的数组参数,该数组中保存执行 Java 命令时传递给所运行的类的参数。又因为 main() 方法是静态的,我们不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员,
    在这里插入图片描述

  • 程序(program):为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。

  • 进程(process):程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。——生命周期
    如:运行中的QQ,运行中的MP3播放器程序是静态的,进程是动态的
    进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域

  • 线程(thread),进程可进一步细化为线程,是一个程序内部的一条执行路径。若一个进程同一时间并行执行多个线程,就是支持多线程的线程是调度和执行的单位,每个线程拥有独立的运行栈和程序计数器(pc),线程切换的开销小,一个进程中的多个线程共享相同的内存单元/内存地址空间—》它们从同一堆中分配对象,可以访问相同的变量和对象。这就使得线程间通信更简便、高效。但多个线程操作共享的系统资源可能就会带来安全的隐患。

  • 并行:多个CPU同时执行多个任务。比如:多个人同时做不同的事。

  • 并发:一个CPU(采用时间片)同时执行多个任务。比如:秒杀、多个人做同一件事。

  • Java中的线程分为两类:一种是守护线程,一种是用户线程

  • 比较创建线程的两种方式。

  • 开发中:优先选择:实现Runnable接口的方式

  • 原因:1. 实现的方式没有类的单继承性的局限性

  •       2. 实现的方式更适合来处理多个线程有共享数据的情况。
    
  • 联系:public class Thread implements Runnable

  • 相同点:两种方式都需要重写run(),将线程要执行的逻辑声明在run()中。
    线程生命周期

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值