面向对象,简单方便,平台无关,多线程,解释与编译并存,支持网络编程,可靠安全
jvm是java虚拟机,针对不同的操作系统用于实现“一次编译,随处运行”
jre是java运行时的环境,是运行 已编译的java程序 所需的所有内容的集合
jdk是jre+编译器+工具,能创建和编译程序
字节码:jvm可以理解的代码(.class)
保留可移植性,解决执行效率低,运行高效,无需编译。
aot:提前编译节约时间
jit:即时编译器,运行时编译。
有些动态代理(cglib)使用到的技术(asm)原理是在运行时直接在内存中生成并加载修改后的字节码文件,提前编译就没法使用这个技术了
编译型:通过编译器一次性翻译成可被平台执行的机器码,执行效率快,开发效率低
解释型:通过解释器一句句翻译成可被平台执行的机器码,开发效率高,执行效率慢
java具有着两种特征,并要经过“先编译,后解释”,先编译生成字节码,再解释
oracle jdk:每6个月更新一次;是参考模型且开源;更稳定;在响应性和jvm性能方面性能更好;
openjdk:开源;商业免费;更新频率快
java:不提供指针来直接访问内存;单继承,但是接口多继承;有自动内存管理垃圾回收机制;方法重载
c++:多重继承;方法重载+操作符重载
单行注释 :通常用于解释方法内某单行代码的作用。
多行注释 :通常用于解释一段代码的作用。
文档注释 :通常用于生成 Java 开发文档
饭店是关键字,张小姐饭店的张小姐是标识符
continue :指跳出当前的这一次循环,继续下一次循环。
break :指跳出整个循环体,继续执行循环下面的语句。
return 用于跳出所在方法,结束该方法的运行。return 一般有两种用法:
return; :直接使用 return 结束方法执行,用于没有返回值函数的方法
return value; :return 一个特定值,用于有返回值函数的方法
成员变量 | 局部变量 | ||
语法形式 | 类 public private static 能被final修饰 | 代码块或者方法 不能被访问控制修饰符及static修饰 能被final修饰 | |
存储方式 | 堆中 | 栈中 | |
生存时间 | 是对象一部分,随对象而存在 | 随方法调用自动生成消亡 | |
默认值 | 有 | 无 |
静态变量作用:被类的所有实例共享;无论多少对象,都共享同一份静态变量;通常静态变量会被final关键字修饰成常量
字符型常量 | 字符串常量 | |
形式 | 单引号 | 双引号 |
含义 | ≈整型值,可以参加表达式运算 | 地址值 |
占内存大小 | 2个字节 | 若干字节 |
基本类型:不赋值就是null;不可以用于泛型;放在虚拟机栈的局部变量表中;基本数据类型占用空间非常小
包装类型:有默认值且不是null;可用于泛型;放在虚拟机的堆中,属于对象类型;
Java 基本数据类型的包装类型的大部分都用到了缓存机制来提升性能。
Byte,Short,Integer,Long 这 4 种包装类默认创建了数值 [-128,127] 的相应类型的缓存数据,Character 创建了数值在 [0,127] 范围的缓存数据,Boolean 直接返回 True or False。
如果超出对应范围仍然会去创建新的对象,缓存的范围区间的大小只是在性能和资源之间的权衡
装箱:将基本类型用他们对应的的引用类型包装起来
拆箱:将包装类型转换为基本数据类型
计算机是二进制的,而且计算机在表示一个数字时,宽度是有限的,无限循环的小数存储在计算机时,只能被截断
BigDecimal
可以实现对浮点数的运算,不会造成精度丢失
著作权归所有 原文链接:https://javaguide.cn/java/basis/java-basic-questions-01.html