java数据类型

基本数据类型

数值型

整数型

long[8]

int[4]

byte[1]

short[2]

字符型

char[2]

布尔类型

boolean[1]

引用数据类型

类 class

接口 interface

数组 []

浮点类型

浮点类型在机器中存放的形式,浮点数=符号位+指数位+尾数位

尾数部分可能丢失,造成精度损失(小数都是近似值).

静态变量

在jdk8以前

  1. 我们认为静态变量是存储在方法区里面有一个静态域

在 jdk8以后

  1. 我们认为在堆里面 : xx类对应的class实例(对象)的尾部

最核心的一点:

  1. 被所有对象共同使用
  2. 在类加载的时候就生成了
  3. **静态变量只有类第一次加载的时候才调用,既可以通过类名调用,也可以通过对象调用。静态方法也可以被实例化对象调用,不过一般推荐类名调用,代码更清晰。**

java静态方法和非静态方法的区别

1、静态方法(static method)

与静态成员变量一样,属于类本身,在类装载的时候被装载到内存中,不自动进行销毁,会一直存在内存中,直到JVM关闭;

2、非静态方法(non-static method)

又称实例化方法,属于实例对象,实例化之后才会分配内存,必须通过类的实例来引用,当实例对象被JVM回收之后,也跟着消失

静态方法和实例方法的区别

1.生命周期

静态方法的生命周期从进程创建时就开始,一直到进程结束,所以说静态方法是全局的,贯穿整个进程

实例方法的生命周期,从实例化对象开始,一直到实例化对象被注销回收之后结束

所以实例方法的生命周期是短于静态方法的生命周期,这也是实例方法中不能调用静态方法的原因

2.调用方式

在外部调用静态方法时,可以使用 “类名.方法名”的方式,也可以使用“对象.方法名”的方式,也就是说调用静态方法时无需创建对象

https://blog.csdn.net/weixin_36087674/article/details/114718529

逻辑运算符

第3章 数据类型变量 - 图1

取整方法

方法一:向上取整Math.ceil();

  1. 举例:Math.ceil(11.4)=12; Math.ceil(-11.6)=-11;

方法二:向下取整Math.floor();

  1. 举例:Math.floor(11.7)=11;Math.floor(-11.2)=-12;

方法三:四舍五入Math.round();
顾名思义,四舍五入后取整,其算法为Math.round(x+0.5),即原来的数字加上0.5后再想下取整即可。

  1. 举例:Math.round(11.5)=12;
  2. Math.round(-11.5)=-11;

访问类型

本类 同胞 子类 不同胞
public
protected ×
默认 × ×
private × × ×

算术运算符重点

1.a%b 取模的公式遵循(重点)

  1. a - a/b * b

2.++的使用

作为独立语句使用 前和后 都完全等价于 i=i+1;

作为表达式使用

  1. 前++ : ++i先自增后赋值
  2. 后++ : i++先复制后自增

3.面试题

面试题一

第3章 数据类型变量 - 图2

面试题 二

第3章 数据类型变量 - 图3

面试题 三

第3章 数据类型变量 - 图4

i=10 i1=11 i2=20

i2=19 i=19(先-1再赋值)

final

https://blog.csdn.net/MyArray/article/details/90237422

  1. final 修饰的属性又叫常量,一般用 XX_XX_XX 来命名
  2. final 修饰的属性在定义时,必须赋初值,并且以后不能再修改,复制可以在如下位置之一:
    1. 定义时: 如果 public final double TAX_RATE = 0.08;
    2. 在构造器中;
    3. 在代码块中;
  3. 如果 final 修饰的属性是静态的,则初始化的位置只能是
    1. 定义时;
    2. 在静态代码块 不能在构造器中赋值;
  4. final 类不能继承,但是可以实例化对象;
  5. 如果类不是 final 类,但是含有 final 方法,则该方法虽然不能重写,但是可以被继承;
  6. 一般来说如果一个类已经是final类了,就没有必要再将方法修饰成 final 方法.
  7. final 不能修饰构造方法(及构造器)
  8. final 和 static 往往搭配使用,不会导致类的加载,效率更高.底层编译器做了优化处理.
    1. class Demo{
    2. public static final int i = 16;
    3. static{
    4. System.out.println("韩顺平教育~");
    5. }
    6. }
  1. 包装类( Integer,Double,Float,Boolean 等都是 final),String 也是 final 类.

final 关键字可以用来修饰 类,方法和变量(成员变量和局部变量)

1、修饰类

final修饰类时,说明该类你不想被别人继承!一个类不被别的类继承就可以使用final来修饰

注意:final类中的所有成员方法都会被隐式地指定为final方法。

2、修饰方法

当一个方法被final修饰后,就代表该方法无法被重写,如果你想明确禁止该方法在子类中被覆盖的情况下,才将方法设置为final的,这样你就无法重写该方法了

第3章 数据类型变量 - 图5

但是:如果父类的 final修饰的方法设置为private,则子类可以写一个同名的方法,此时 ,该同名的方法不再产生final的报错,而是在子类重新定义了一个方法(注:类的private方法会隐式地被指定为final方法。)

第3章 数据类型变量 - 图6

3、修饰变量

  1. final修饰的变量其实就相当于定义了一个常量,无法被修改的变量,如果final修饰的是一个**基本数据类型**的变量,那么这个变量的值就定了,不能变了,而如果修饰的是一个**引用变量**,那么该变量存的是一个内存地址,该地址就不能变了,但是该内存地址所指向的那个对象还是可以变的,就像你记住了人家的门牌号,但你不能管人家家里人员数量

第3章 数据类型变量 - 图7

但是你可以改那个对象的内容:

第3章 数据类型变量 - 图8

  1. 还有的人给方法定义的参数是 final类型的,是不想别人在方法内部修改参数的值,如果final修饰的是一个基本类型,那么是可以的,如果修饰的是引用类型,那么便不行了,因为就如上文那个str.append 对象的内容是可以变化的!