java知识点拾遗(基本语法)

本文深入探讨Java中的浮点数处理,包括精度问题及BigDecimal类的使用;解析字符、布尔类型和二元运算符规则;详解Java内存模型,包括栈、堆和方法区的功能与特性;并介绍了数组静态初始化的方法。
  1. 浮点数
  • 浮点常量默认为double,要变为float需要在数字末尾加F/f。当然表示double常量的末尾D/d可以省略。
  • 浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数值计算,需要使用BigDecimal类。
import java.math.*;
...

BigDecimal bd=BigDecimal.valueOf(0.1);
bd=bd.subtract(BigDecimal.valueOf(0.1))
//这里可以使用比较运算

BigDecimal bd2=BigDecimal.valueOf(0.1);
BigDecimal bd3=BigDecimal.valueOf(1.0/10.0);
System.out.println(bd2.equals(bd3));
...
  1. 字符数据类型
  • 单引号表示char类型,双引号表示String类型。
  • Unicode范围是从0到65535之间的编码。十六进制从“\u0000”到“\uFFFF”来表示。
char c='\u0061';
  1. boolean类型
  • 值true和false,在内存中占一位,不可以用0或非0替代false和true。
  1. 二元运算符的运算规则

整数运算:

  • 如果两个操作数有一个为long,则结果也为long。
  • 没有long时,结果为int。即使操作数全为short,byte结果也是int。

浮点运算:

  • 如果两个操作数有一个为double,则结果为double。
  • 只有两个操作数都是float,则结果才为float。
  1. 求余运算
  • 余数的符号与左边操作数相同
    如:7%3=1,-7%3=-1,7%-3=1
  1. 逻辑运算
  • 非短路运算符:&,|
  • 短路运算符:&&,||
  1. 字符串连接
  • +连接的变量只要有一个是字符串,则按字符串连接处理。
  • char对于+按照整型加法处理。
  1. java源文件
    一个文件中可以定义多个类,但只能有一个类是public的,且public的类名与主文件名同名。

  2. Java的虚拟内存

  • 栈区stack area
(1) 栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量,操作数,方法出口等)。
(2) JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数,局部变量等)。
(3) 栈属于线程私有,不能实现线程间的共享。
(4) 栈的存储特性:先入后出
(5) 栈由系统自动分配,速度快。栈是一个连续的内存空间。
  • 堆区heap area
(1) 堆用于存储创建好的对象和数组。
(2) JVM只有一个堆,被所有线程共享。
(3) 堆是一个不连续的内存空间,分配灵活,速度慢。
  • 方法区method area
(1) 方法区也叫静态区。JVM只有一个方法区,被所有线程共享。
(2) 方法区实际也是堆,只是用于存储类,常量相关的信息。
(3) 用来存放程序中永远不变或唯一的内容(类信息,静态变量,字符串常量等)。


10. super()
构造方法的第一句就是super(),如果没定义,Java也会在第一句的位置自动加上一个super()。

  1. 在构造方法中调用构造方法
  • 必须用this()形式调用。
  • this()必须是第一句。
  • this不能用于static方法中。
  1. 静态初始化块
static{
 ...
 //只能操作静态方法和静态属性
}

用于对类进行初始化。

  • 上溯到Object类,先执行Object的静态初始化块,再向下执行子类的静态初始化块,直到我们的类的静态初始化块为止。
  1. Java中所有的参数传递都是值传递。

  2. java.lang语言核心包不需要导入,默认导入。

  3. 静态导入
    可以将静态常量,方法等导入,以便直接使用,无需加前缀。

import static java.lang.Math.*;
...
System.out.println(PI);
...
  1. 枚举的基本使用
enum EnumName{
	枚举体(常量列表)
}

比如:

enum F4{
	XUANZANG,XINGZHE,WUJING,WUNENG
}
  1. 数组的静态初始化
int[] a1 = new int[]{1, 2, 3, 4, 5, 6};
int[][] a2 = new int[][]{{1, 2, 3}, {1, 2}, {3, 4, 6}, {4}};
int[][][] a3 = new int[][][]{{{1, 2, 3}, {1, 2, 3}, {1, 2, 3}}, {{1, 2, 3}, {1, 2, 3}, {1, 2, 3}}, {{1, 2, 3}, {1, 2, 3}, {1, 2, 3}}};
Object[] dragon2={3,"瓦塔诺",16,"登龙剑"};

参考资料

  • https://www.sxt.cn/Java_jQuery_in_action/History_Direction.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值