Java知识点

JDK、JRE、JVM

  • JDK:JAVA 开发工具包,为了写程序
  • JRE:java运行环境,包含java虚拟机(JVM)和Java程序所需的核心类库等
  • 在这里插入图片描述

0.Java知识点

三条主线
1.类和类的结构
属性、方法、构造器,代码块、内部类
2.面向对象的三大特征
封装性、继承性、多态性
封装性:权限修饰符修饰类和类的内部结构,体现可见性的大小
继承性:
多态性:
3.关键字
先有,后有对象

1.关于this

1.this可以用来修饰:属性、方法、构造器
2.this:当前对象this.age(当前对象加点(.))对象后面不是属性就是方法 对象.(属性 or 方法)
3.属性和方法都是类中的,对象调用属性或者方法
形参和属性同名,会有就近原则

  • 属性和形参不同名的时候:属性和形参可以区分开
    在这里插入图片描述
  • 属性和形参同名时:
    会有就近原则
    在这里插入图片描述
    把age赋给了自己,与属性age无关
    在这里插入图片描述
    this详解

2.int和integer的关系

链接: link.
链接: link.

摩尔投票法

3.RAM和ROM

两者都是存储器。断电时,RAM的数据小事,ROM可以保持;RAM的速度比ROM快
RAM通常作为操作系统或其他正在运行程序的临时存储介质(也可以称作为系统内存),可以在任何时候读写,但是当电源关闭时RAM不能保留数据,如果需要保存数据,则需要把数据写入到长期存储器中,即硬盘。
ROM相当于PC机上的硬盘,用来存储和保存数据,不能随意更新,但是在任何时候都可以读取。

4.JAVA在程序运行时的内存分配(对象的内存解析)

链接: 参考.

java程序在运行时,在内存(ROM)中划分5片空间进行数据的存储,分别是1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。
最重要的是

堆:是运行时的数据区,类的对象从堆中分配空间。通过new等指令建立,通过垃圾回收器来销毁。优势在于可以动态的分配内存空间,需要多少内存空间不必事先告诉编译器,因为在运行时是动态分配的。但是缺点是,由于需要在运行时动态分配内存,所以存取速度较慢。
栈:存放一些基本数据类型的变量(byte,short,int,long,float,double,boolean,char)和对象的引用

栈:主要存放局部变量,定义在方法中的
堆:主要存放对象实例,new出来的(包括类对象以及数组对象,字符串对象这种),真实的创建对象的实体都在堆对象中
方法区:加载的类信息,常量,静态变量
在这里插入图片描述
代码解析
第一行:new了一个对象,new的对象实体都存储在堆中,对象实体有一个首地址值(十六进制表示 ),然后通过“等号=”操作将右边数据赋值到左边(赋过来的是一个地址),p1实际上是定义在main方法中的,是一个局部变量,存储在栈中。类中有三个属性,属性存储在堆空间中,在造好的对象中,属性有值(没有赋值的即为默认值)
第四行:new了一个对象,重新在堆空间中造了一个对象,包括实体和首地址值。将地址值赋给栈空间中的p2(p2是定义在main方法中的,是一个局部变量,在栈中),通过地址值,栈空间中的p2对象指向堆空间中的person实体
第五行:p3是p1赋值的地址值,p1存储的是什么,就传什么值,p1存储的是地址值,所以传给p3的也是地址值,顺着地址值找到了堆空间中的结构,p3不是新创建的对象,是新声明的变量,p1和p3指向堆空间中的同一个对象实体,p3将age属性修改之后,如果p1再去调用age属性,属性值也改变了,因为是同一个对象实体。

如果创建了一个类的多个对象,多个对象是独立的拥有一套类的属性

5.变量

局部变量:在方法中的变量都是局部变量,没有默认值(所以需要提前定义好),存储在栈中
成员变量(也叫属性)field:在类中,方法之外,有默认值,存储在堆中
静态变量:在方法区中
相同点:
1.定义变量的格式:数据类型 变量名 = 变量值
2.先声明,后使用
3.变量都有其对应的作用域
不同点:
1.在类中声明的位置不同(变量的声明:前面带一个类型的:String food)

  • 属性(成员变量):直接定义在类的一对{}内
    有默认值,存储在堆中。在这里插入图片描述
  • 局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量 - 形参在这里插入图片描述
    在这里插入图片描述 2.关于权限修饰符的不同
  • 属性:可以在声明属性时,指明其权限,使用权限修饰符
  • 常用的权限修饰符:private、public、缺省、protected;(没有写的就表示缺省),权限表示被调用时候的可见性。
  • 局部变量:不可以使用权限修饰符
    3默认初始化值的情况
  • 属性:类的属性,根据其类型,都有默认初始化值。
    整型(byte、short、int、long):0
    浮点型(float、double):0.0
    字符型(char):0
    布尔型(boolean):false
    引用数据类型(类、数组、接口):null
  • 局部变量:没有默认初始化值:意味着局部变量在调用前需要被初始化赋值——显式赋值(烙饼删掉会报错)
    特别的:形参在调用时,我们赋值即可
    在这里插入图片描述
    形参调用
    在这里插入图片描述
    4.在内存中加载的位置:
    属性:加载到堆空间中(非static的)
    局部变量:加载到栈空间

属性:存储在堆空间中,在造好的对象里面
属性:类成员变量不全都是属性,只有能够访问到的成员变量才是属性,也就是成员变量必须有set和get方法,一般来说,set/get方法名,去掉set/get后,将剩余部分首字母小写得到的字符串就是这个类的属性。
1.属性的名字不是由成员变量决定的。通常set方法和get方法的名字是set或者get加上成员变量的名字,成员变量的首字母要变成大写。而属性的名字就是去掉set或者get,然后把首字母变成小写。从这两个命名规则可以看出,通常属性名与成员变量的名字是一致的。但是,如果在写set方法和get方法的时候,没有按照默认的规则写,则属性名字和成员变量名字就一样了

6.形参实参

形参:意义是给属性赋值,是一个标识符。

7.类的结构

  1. 属性
  2. 方法
  3. 构造器:作用是创造对象,如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器;定义构造器的格式:权限修饰符 类名(形参列表){};初始化对象;一个类中可以定义多个构造器,彼此构成重载;一旦显式的定义了类的构造器之后,系统就不再提供默认的空参构造器。
Person p = new Person();
//Person()是一个构造器,空参构造器
//在类中class Person
public Person(String n){
    name = n;
}

8.javabean的使用

定义:是一种Java语言写成的可重用组件(1)类是公共的(2)有一个无参的公共的构造器,方便造对象(3)有属性,且有对应的get、set方法

public class Customer{
 private int id;
 private String name;
 //提供一个空参构造器,反射的方式造对象
 public Customer(){
 
 }
 public void setId(int i){
   id = i;
 }
 public int getId(){
   return id;
 }
 public void setName(String n){
   name = n;
 }
 public String getName(){
   return name;
 }

collection接口

List接口

  • ArrayList
  • LinkedList
  • Vector

set接口:存储无序的、不可重复的数据,没有额外定义新的方法,使用的都是collection中声明过的方法。
无序性不等于随机性。

  • HashSet:作为set接口的主要实现类
  • LinkedHashSet:
  • TreeSet
    包括方法:
    add()方法

Map接口

与collection并列

1. 数据类型

在这里插入图片描述
整数类型

  • 声明long型变量,必须以l或者L结尾
  • 常用int
    浮点类型
  • 常默认为double型
  • 声明float型常量,需要加f或F
  • float表示数值的范围比long还大
    字符型
  • 一个字符是2个字节
  • 用一对单引号
  • 字符内部只能写一个字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值