String表示字符串,所谓字符串,就是一连串的字符;
String是不可变类,一旦String对象被创建,包含在对象中的字符序列(内容)是不可变的,直到对象被销毁;
//一个String对象的内容不能变,一旦内容改变对象在常量池中新建类一个STRING对象
常量池:JVM中一块独立的区域存放字符串常量和基本类型常量(public static final)。
栈=====存放变量名
堆=====存放new的地址值
常量池====存放的字符串是由单个字符组成的,两个变量名的值如果是一样的比如都是"AAA"那么两个变量都是指向同一个地址
在JAVA中 等号(“=”)的作用是地址的比较。。。如果是值的比较那么 应该要用子变量(equals)做比较。。
比如 S1.equals(s2);//s1的值是否和s2的值相等。。
s1==s2//s1的地址和s2的地址相等
String S1=NEW String(“AAA”);//创建1个或者2个对象。。。。。String创建对象是先去常量池寻找有没有“AAA”,如果没有则在堆创建一个 然后在常量池创建一个“AAA”。。。。。堆指向常量池。。。。String s3="bbb" 创建1个或者0个。。。
//以加号(“+”)连接的字符/字符串,编译器在编译的时候会将“A”+“B”+“C” 编译成“ABC”
.println((200 - 110) + "cents");
/*
对于找零,这种要求小数点后的位数尽可能的少的时候,改变换算单位比如找0.01元则写成找零1分。。。
*/
解决该问题的另一种方式是使用执行精确小数运算的 BigDecimal。它还可以通
过 JDBC 与 SQL DECIMAL 类型进行互操作。这里要告诫你一点: 一定要用
BigDecimal(String)构造器,而千万不要用 BigDecimal(double)。后一个构造
器将用它的参数的“精确”值来创建一个实例:new BigDecimal(.1)将返回一个
表示 0.100000000000000055511151231257827021181583404541015625 的
BigDecimal。通过正确使用 BigDecimal,程序就可以打印出我们所期望的结果
0.90:
import java.math.BigDecimal;
public class Change1{
public static void main(String args[]){
System.out.println(new BigDecimal("2.00").
subtract(new BigDecimal("1.10")));
}
}
这个版本并不是十分地完美,因为 Java
不要使用小写的“l”作为变量而要使用大写“L”,因为容易和数字1搞混
|
|