Java
基本数据类型(byte,short,int,long,float,double,char,boolean)
- byte a=1; //byte 整数,1个字节 -128~127
- short b=2; //short 整数,2个字节 -32768~32767
- int c=3; //int 整数,4个字节 -2147483648~2147483647
- long d=4; //long 整数,8个字节 范围为 -9223372036854775808~223372036854775807
- float e=1.2f; //float 浮点型,4个字节,定义时变量后面要加f,因为浮点数系统默认为double型
- double f=2.3; //double 浮点型,8个字节
- char h=‘d’; //char 字符型,2个字节,定义变量时使用‘ ’(单引号)
- boolean a=true; // boolean 布尔型,有两个取值,false和true.
浮点数值问题,小数点后几位 ,DecimalFormat,BigDecimal
DecimalFormat用法,解决精度问题,保留两位小数,得到的结果为String类型。
DecimalFormat decimalFormat = new DecimalFormat("#.##");
String aaa = decimalFormat.format(0.15*111);
System.out.println(aaa);
BigDecimal用法 解决精度问题,这样想乘可以保留计算原有的精度。
double res = BigDecimal.valueOf(106).multiply(BigDecimal.valueOf(0.13))
.doubleValue();
System.out.println(res);
String 解析
String为一个类,强类型,定义方法有:
String a1=“a”; String b1 = new String(“a”);
如果采用String a1=“a”;的定义方法,则声明的变量如果是一个常量,会存储在常量区中,且再次定义相同的常量给一个变量时(如:String a2=“a”;),会把该常量的地址赋给新的变量,所以此时 a== b 为true;
如果采用 String b1 = new String(“a”); 的定义方法,则定义的变量会把变量存储到堆中,每一次定义一个变量都会重新定义,所以地址不一样,于是如果再次定义一个变量 String b2 = new String(“a”); ,则 b1==b2 为false;
注意,当使用Scanner的next()输入时,可以看做是使用 String b2 = new String(“a”); 方法定义变量,会储存到堆中。
所以String如果需要比较值,有一个方法 equals ,如 “a”.equals(b1); 如果值相等则返回true,使用这种方法时,建议把需要比较的字符放在前面,把变量放在后面,原因是变量有可能为null,这样会导致程序报错,后续代码无法执行。
==和equlas的区别
== 基本类型比较值,
String的equals 方法是比较内容本身,和地址无关,
内容相等则返回true.
== 如果相等, 那么 equals 一定相等
反之, equals相等, ==不一定相等
包装类的equals首先判断是否同一类型, 如果类型不同直接false,
还来不及比数据.
包装类和基本数据类型比较的时候, 统一按基本数据类型比较.比较值.
常量池
“啊”,1,2,4数据称为常量,常量池中如果没有第一次会创建该常量,然后返回引用,如果有,直接返回常量的引用,不会再创建
整数常量池中默认只有 -128~127 共256个数. 后续的会在堆中开辟新的.
堆
用户每次new关键字的对象,都会在堆内存中创建
一个新的对象,并返回该新对象的引用.
包装类和基本数据类型的区别?
- 包装类可以为null ,原生类不可以为null.
- 包装类默认实现了一些方法,方便使用. 原生类没有方法.
- 包装类属于强类型, 引用传递. 原生类属于值传递.
- (PS:如果包装类要和原生类比较数据, 那么按原生类比较,因为原生类没有地址.)
switch 允许的数据类型
char, byte, short, int, Character, Byte, Short, Integer, String, enum
jdk1.8及以上
jdk1.6及以下不支持String
本文地址:https://blog.csdn.net/Liu_csdn_qp/article/details/107663263