java基础之一 语法基础

  1. JVM(Java virtual Machine java虚拟机) compiler(编译器)interpreter(解释器),JVM包含解释器

  2. JDK:Java Development Kit(java开发工具包) JRE:java Runtime Environment(java运行时环境)

  3. IDE:集成开发环境(IDE)是一类软件,它将程序开发环境和调试环境集合在一起,提高开发效率的第三方工具,如Eclipse(绿色版)、MyEclipse、NetBeans、IDEA

  4. 标识符:用于给 Java 程序中变量、类、方法等命名的符号。
    使用标识符时,需要遵守几条规则:
    (1)标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符,不能以数字开头。譬如:123name 就是不合法的
    (2)标识符不能是 Java 关键字和保留字( Java 预留的关键字,以后的升级版本中有可能作为关键字),但可以包含关键字和保留字。如:不可以使用 void 作为标识符,但是 Myvoid 可以
    (3) 标识符是严格区分大小写的。
    (4) 标识符的命名最好能反映出其作用,做到见名知意。

  5. 变量可以先声明后赋值,也可以声明的同时赋值

  6. 常量名一般使用大写字符,语法:final 常量名 = 值;

  7. float是单精度浮点数,内存分配4个字节,占32位,有效数字8位;double是双精度浮点数,内存分配8个字节,占64位,有效数字17位
    (1)double精度高,有效数字16位,float精度8位。但double消耗内存是float的两倍,double的运算速度比float慢得多,所以在使用计算过程中,能用单精度时不要用双精度,以省内存,加快运算速度;
    (2)当你不声明的时候,默认小数都用double来表示,所以如果要用float的话,则应该在其后加上f;
    (3)小数的加减乘除应转换成BigDecimal运算;

  8. 在 Java 的领域里,基本数据类型变量存的是数据本身,而引用类型变量存的是保存数据的空间地址。

  9. String转Long等基本类型:
    (1)Long.valueOf(“String”) 返回Long包装类型
    (2)Long.parseLong(“String”) 返回long基本数据类型

  10. 自动装箱和自动拆箱:
    (1)自动装箱:编译器自动将基本数据类型转换为包装类型;
    (2)自动拆箱:编译器自动将包装类型转换为基本数据类型。

  11. 货币金额和浮点数处理注意事项:
    (1)【强制】任何货币金额,均以最小货币单位且整型类型来进行存储。比如说人民币的最小单位是分,那假设一个商品的价格是1元钱,那就存到数据库的 price 字段,字段类型是 int 或者 bigint,值为 100,单位是分,也就是100分。
    (2)【强制】浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用 equals
    来判断。
    (3)double类型转BigDecimal禁止用new BigDecimal(),优先推荐入参为 String 的构造方法,或使用 BigDecimal 的 valueOf 方法。

   BigDecimal recommend1 = new BigDecimal("0.1");
   BigDecimal recommend2 = BigDecimal.valueOf(0.1);

(4)BigDecimal转double:不要直接使用Double.parseDouble转,使用BigDecimal类里面doubleValue()方法

	BigDecimal d = new BigDecimal("0.1");
	double b = d.doubleValue()
  1. 堆、栈、常量池的区别:
    (1)heap(堆):存放new关键字构造出来的对象,优点是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据,缺点是存取速度较慢。
    (2)stack(栈):存放一些基本数据类型的变量(byte,short,int,long,float,double,boolean,char)和对象的引用。优点是存取速度比堆快,栈数据可以共享,缺点是,存放在栈中的数据占用多少内存空间需要在编译时确定下来,缺乏灵活性。)
    (3)常量池(存放字符串常量和基本类型常量(public static final),好处是为了避免频繁的创建和销毁对象而影响系统性能,其实现了对象的共享。

  2. 简单的说,静态变量是常驻内存的,一般把配置信息等常用内容放在里面。比如文件路径、字符集编码、一般设置参数等。

  3. 元空间:主要作用是存储类的元数据信息,包括类的结构信息、方法信息、字段信息、注解信息等。与永久代不同,元空间的内存空间并不在虚拟机堆中,而是在本机物理内存中分配,因此元空间的大小不受虚拟机堆的大小限制,也不会触发垃圾收集器的工作。

  4. JDK1.6及以前,常量池在方法区,这时的方法区也叫做永久代;
    JDK1.7的时候,方法区合并到了堆内存中,这时的常量池也可以说是在堆内存中;
    JDK1.8及以后,方法区又从堆内存中剥离出来了,但实现方式与之前的永久代不同,这时的方法区被叫做元空间,常量池就存储在元空间。

  5. for循环与while循环的区别
    (1)从内存角度考虑:局部变量在栈内存中存在,当for循环语句结束,那么变量会及时被gc(垃圾回收器)及时的释放掉,不浪费空间;如果使用循环之后还想去访问循环语句中控制那个变量,使用while循环。
    (2)从应用场景角度考虑:如果一个需求明确循环的次数,那么使用for循环(开发中使用for循环的几率大于while循环);如果一个需求,不知道循环了多少次,使用while循环。

  6. System.exit(0)是正常退出程序,而System.exit(1)或者说非0表示非正常退出程序。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值