java基础学习笔记

java语言特点

1、面向对象

2、支持多线程

3、可靠性

4、安全性

JVM虚拟机

1、java虚拟机(JVM)是运行Java字节码的虚拟机。jvm有针对不同系统的特定实现(windows、linux、macOS)

2、JVM不仅仅只有一种,只要满足JVM规范,每个公司、组织或者个人都可以开发自己的专属JVM

JDK和JRE

     JDK是Java Development Kit 缩写,它是功能齐全的java SDK。它拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb)。它能够创建和编译程序

字节码

   在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以, Java 程序运行时相对来说还是高效的

java与python的区别

  java是编译型语言,class文件需要解析器来运行,python是脚本语言,需要有相应的脚本引擎才能运行

java注释

1、单行注释 :注释单行代码   

 

2、多行注释:解释一段代码的作用

3、文档代码:用于生成开发文档,在实际开发中应用较少

标识符和关键字

标识符:为程序、类、变量、方法等取名字

关键字:被赋予特殊含义的标识符

自增自减运算符

   在写代码的过程中,常见的一种情况是需要某个整数类型变量增加 1 或减少 1,Java 提供了一种特殊的运算符,用于这种表达式,叫做自增运算符(++)和自减运算符(--)。

++和--放在变量之前,代表先自增/自减后再赋值;当++和--放在变量之后,代表先赋值后自增/自减

continue、break、return的区别

1、continue:跳出当前的这一次循环,继续下一次循环

2、break:指跳出整个循环体,继续执行循环下面的yujv

3、return :跳出当前执行的方法、结束该方法的运行

java基本数据类型

基本类型和包装类型的区别

  • 成员变量包装类型不赋值就是 null ,而基本类型有默认值且不是 null
  • 包装类型可用于泛型,而基本类型不可以。
  • 基本数据类型的局部变量存放在 Java 虚拟机栈中的局部变量表中,基本数据类型的成员变量(未被 static 修饰 )存放在 Java 虚拟机的堆中。包装类型属于对象类型,我们知道几乎所有对象实例都存在于堆中。
  • 相比于对象类型, 基本数据类型占用的空间非常小

 基本数据类型的成员变量如果没有被 static 修饰的话,就存放在堆中。

包装类型的缓存机制

Java 基本数据类型的包装类型的大部分都用到了缓存机制来提升性能。

 

Integer i1 = 3;
Integer i2 = 3;
System.out.println(i1 == i2);// 输出 true

Float i11 = 2f;
Float i22 = 2f;
System.out.println(i11 == i22);// 输出 false

Double i3 = 5.0;
Double i4 = 5.0;
System.out.println(i3 == i4);// 输出 false

自动装箱与拆箱

  • 装箱:将基本类型用它们对应的引用类型包装起来;
  • 拆箱:将包装类型转换为基本数据类型;
Integer i = 100;  //装箱
int n = i;   //拆箱
  • Integer i = 100 等价于 Integer i = Integer.valueOf(10)
  • int n = i 等价于 int n = i.intValue();

注意:如果频繁拆装箱,也会严重影响系统的性能

浮点运算的时候精度丢失

为什么?这个和计算机保存浮点数的机制有很大关系。我们知道计算机是二进制的,而且计算机在表示一个数字时,宽度是有限的,无限循环的小数存储在计算机时,只能被截断,所以就会导致小数精度发生损失的情况。这也就是解释了为什么浮点数没有办法用二进制精确表示

如何解决浮点数运算精度丢失?

    通常情况下,大部分需要浮点数精确运算结果的业务场景(比如涉及到钱的场景)都是通过 BigDecimal 来做的。

BigDecimal a = new BigDecimal("3.0");
BigDecimal b = new BigDecimal("2.0");
BigDecimal c = new BigDecimal("1.0");
BigDecimal x = a.subtract(b);
BigDecimal y = b.subtract(c);

System.out.println(x); /* 0.1 */
System.out.println(y); /* 0.1 */
System.out.println(Objects.equals(x, y)); /* true */

超过long整型的数据如何表示

long l = Long.MAX_VALUE;
System.out.println(l + 1); // -9223372036854775808
System.out.println(l + 1 == Long.MIN_VALUE); // true

参考

https://javaguide.cn/java/basis/java-basic-questions-01.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值