目录
1、参数类型分布图
1.1 浮点型
1.2 字符型char
1.2.1 char大小
1.3 字符串:(String-不可变字符串)
1.3.1 Jvm内存图
1.3.2 开辟空间个数注意
1.3.3 使用==时注意
1.3.4 字符串拼接举例
java基础设置参数
1.3.5 String常见的方法
1.4 字符串:(StringBuffer-可变字符串、StringBuilder-可变字符串)
1.4.1StringBuilder和StringBuffer常见的一些方法
2、变量
2.1 变量定义
2.2 变量的划分
3、常量
1、参数类型分布图
注意:
整型默认 int
浮点型默认 double
讯享网这句话会报错,因为右边为3.0默认为double类型 double范围大 不能赋值给小范围的float
1.1 浮点型
float

double

1.1.1面试小问题 int和float 谁的精度高

结果为:int精度高
根据float的计算公式 2^(阶位-127)*数字位 阶位大于127 为整数 小于为小数
阶位=127时 2^0 ==1
阶位=128时 2^1 ==2
阶位=129时 2^2 ==4 所以float的整数排列不均匀
1.1.2使用浮点数计算存在精度丢失

理由:
主要原因是浮点数的表示方式。浮点数在计算机中以二进制形式表示,但无法准确地表示所有的实数,尤其是十进制小数。由于浮点数的表示是有限的,所以在进行浮点数计算时可能会出现精度丢失。
以下是一些导致浮点数计算精度丢失的常见原因:
- 有限的表示范围:浮点数的表示范围是有限的,取决于所使用的数据类型(如float、double等)。当超出表示范围时,浮点数会被舍入或近似表示,从而导致精度丢失。
- 二进制小数表示:浮点数在内存中以二进制表示,但某些十进制小数无法精确转换为二进制小数。例如,0.1 的十进制表示无法完全转换为有限位数的二进制表示,因此会存在舍入误差。
- 运算顺序和舍入误差累积:浮点数的运算顺序以及每次运算的舍入误差都可能导致精度丢失。由于浮点数运算是按照机器指令执行的,每次运算结果都会舍入到最接近的可表示值,这可能会引入累积的舍入误差。

- 不精确的数学运算:某些常见的数学运算,如开方、三角函数等,在浮点数计算中可能会导致精度丢失。这是因为这些运算可能需要进行多次迭代计算,并且每次计算都会引入一定的误差。
为了避免浮点数计算中的精度丢失问题,可以考虑使用其他数据类型或者采取更加精确的计算方法,例如使用BigDecimal类进行高精度计算。此外,也可以对计算过程进行适当的优化和控制,避免累积的舍入误差。
解决
讯享网
因为float存在精度丢失,进行比较时容易忽略,一般使用差值比较

1.2 字符型char
赋值方式1:char k ='d'; 单引号 一个字符
赋值方式2:char k =333; 无引号 一个字符 存放数字时 会把其当作一个抽象符号使用

赋值方式3:char p ='中' 单引号 '�; ⥈span>
1.2.1 char大小
若编码为 ASCII 则大小为 一字节
若编码为 Unicode(java中) 则大小二字节
1.3 字符串:(String-不可变字符串)
定义之后,其值存在于字符串常量池中,jvm中专门存储常量的地方,避免创建常量时频繁的数据创建和销毁,实现数据的共享,提高系统性能。
1.3.1 Jvm内存图
类常量池:存储创建的类
栈区:方法调用(入栈出栈)
堆区,动态开辟系统空间
程序计数器:计算栈区调用方法的顺序

1.3.2 开辟空间个数注意
举例:先在类常量池中创建Test类的空间,调用时在栈区入栈main方法,在main定义变量时,创建基本数据类型aa则直接存入main中,创建引用类型String则先在字符串常量池中开辟参数空间,然后引用字符串常量池中对应参数的地址

若使用
若是String bb = new String(“123”) 则在栈区开辟new String的新空间(地址999),在main中开辟String bb的新空间,若参数值“123”以及在字符串常量池中存在,则字符串常量池中不开辟新空间,反之则开辟,然后栈区的new String在调用字符串常量池中对应参数的地址。
1.3.3 使用==时注意
== 的含义是比较地址,str3的值调用的地址是栈区的999地址的方法(如上图),而str1的值和str2的值调用的888地址,

1.3.4 字符串拼接举例

s3和s4的值相同但是两种引用的地址不同,字符串拼接实际就是(StringBuilder.toString) new String 的使用
注意两种拼接的方式:

String ss1 = “123”+”456”; 是直接寻找拼接后的结果 “” 如果字符串变量池中有“”则直接指向地址,没有再创建新的地址
1.3.5 String常见的方法
讯享网
1.4 字符串:(StringBuffer-可变字符串、StringBuilder-可变字符串)
StringBuffer和StringBuilder的区别
1、如果不频繁修改字符串建议使用String,
2、如果频繁修改字符串,并且是多线程下建议使用StringBuffer--可以保证线程安全
3、如果频繁修改字符串,并且是单线程下建议使用StringBuilder--快 但是线程不安全
进程:计算机中最小的资源分配单位
线程:计算机中最小的执行单位
1.4.1StringBuilder和StringBuffer常见的一些方法
2、变量
2.1 变量定义
变量名必须是字母或者下划线开头,并且可由数字、字母、下划线组成,大小写敏感
变量初始化的实质是拥有自己的内存空间
2.2 变量的划分
1、全局变量(有默认值,可以不赋值)
全局变量默认值:整型:0、浮点型:0.0、 布尔型:false、 字符型:null、 引用类型:null
2、局部变量(没有默认值,使用之前一定要赋值)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/882.html