基本数据类型:
Java提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一个字符类型,一个布尔型。
byte(Byte):-128 ~ 127, 占1字节,默认值是 0;
short(Short ):-32768 ~ 32767,占2字节,默认值是 0;
int(Integer):-2^31 ~ 2^31-1,2开头的10位数,占4字节,默认值是 0;
long(Long):-2^63 ~ -2^63-1,9开头的19位数,占8字节,默认值0L,eg:long a = 100L;
float(Float):单精度,占4字节,存储7位有效数(整数+小数部分不超过7,不算小数点),默认值是 0.0f,eg:float f1 = 12.5f;
double(Double):双精度、占8字节,存储16位有效数,默认值是 0.0d,eg:double d = 1.5; double d = 1.5d;
boolean(Boolean):占1字节,默认值是 false;
char(Character):占2字节,默认值'u0000';
注意:
1、表示货币需使用BigDecimal,不用浮点数,因为浮点数不能表示精确的值;
2、小数默认是 double 型,在定义 float 类型时必须在数字后面跟上 F 或者 f,浮点数推荐用double;
3、常用格式输出:eg:System.out.printf("姓名:%s,年龄:%d,性别:%c。", name, age, sex); str=String.format("Hi,%s", "小超");
%c 字符输出
%s 字符串输出
%d 整数,十进制输出
%x 整数,十六进制
%o 整数,八进制
%f 浮点类型,十进制;%.nf :保留n位小数; %m.nf:输出共占m列,其中有n位小数
通用方法
(1)
基本类型=>包装类:包装类名.valueOf(基本类型)例:
egg:Long.valueOf( 5L );
Integer.valueOf( n );
包装类=>基本类型:包装类对象.基本类Value();例:
egg:ch.charValue();
bt.byteValue(); f.floatValue();
(2)
包装类=>字符串:包装类对象.toString();例:
egg:ch.toString();
基本类型=>字符串:String.valueOf(基本类型)或者 "" + 基本类型;例:
egg:boolean b = false;
String str = String.valueOf(b);
String str = "" + b;
字符:
创建:
char ch = 'a';
Character ch = new Character('a');
基本:
Character.isLetter( ch ) //是否为字母 Character.isDigit( ch ) //是否为数字 Character.isUpperCase( 'c' ) //是否为大写字母 Character.isLowerCase('c') //是否为小写字母 Character.toString( 'a' ) //返回字符的字符串形式,长度仅为1
字符串:
创建:
String str = "hello"; //一般用new创建对象,但对于字符串,可以像基本类型一样,可以直接赋值;
String str2=new String("hello");
基本:
int length = str.length(); //获取长度 char result = s.charAt( 6 ); //获取指定索引处的字符; String str = str1 + str2 + str3; //拼接字符串 str1.concat( "hello" ); //拼接 str1.equals( str2 ); //字符串比较,返回true或false str1.equalsIgnoreCase( str2 ); //字符串比较,忽略大小写 备注:str1==str2 //比较的是引用,而非数值,所以不用此比较;
查找:
str.indexOf( "a" ) //查找字符串第一次出现的索引,没有则返回-1; str.indexOf( "a",5 ) //从指定位置开始查找,没有则返回-1; str.lastIndexOf( 'a' ) //查找字符串最后一次出现的索引,没有则返回-1; str.lastIndexOf( 'a',5 ); str.contains( "a" ); //判断是否包含某字符串,返回true或false;
截取:
str.substring( nStart ); //截取nStart之后的字符串; str.substring( nStart, nEnd ); //截取nStart和nEnd之间的字符串;
替换:
str.replace( "aa","bb" );//把字符串aa全部替换成bb str.replaceAll( "[0-9]" ,"bb" );//通过正则表达式替换全部匹配到的字符串; str.replaceFirst( "[a-z]","bb" );//通过正则表达式只替换第一个匹配到的; str.split( "-" );//把字符串分隔成为数组; 备注:. $ | * + 等转义字符,必须得加 \\,egg:str.split( "\\$" );如果用"\"作为分隔,就得写成这样:String.split("\\\\");(4个\)
其他:
str.trim(); //清除头尾空白符,包括空白、换行、tab制表符; str.isEmpty() //判断字符串是否为空,即长度为0; str.toUpperCase() //转换成大写 str.toLowerCase() //转换成小写 str.toCharArray( ); //将str转化为字符数组;
扩展:
StringBuffer 和 StringBuilder:可变的字符序列。由于String 是不可变的对象, 每次对 String 类型进行改变的时候,都会生成新的对象,然后将指针指向新的对象,所以经常改变内容的字符串最好使用这俩种类型,其中StringBuilder比StringBuffer速度更快,主要方法:
strBuffer.append( "hello" ) :字符串末尾追加; strBuffer.insert( 5 , "hello"):在指定位置插入; strBuffer.delete( nStart , nEnd):删除索引nStart和nEnd中间的内容; strBuffer.reverse( ):反转字符串顺序
String、StringBuffer、StringBuilder之间转化可以使用构造方法: String str = new String(strBuffer); StringBuffer stBuf = new StringBuffer(str); String 对象可以用操作符 "+ "进行连接,StringBuffer、StringBuilder不能;
数组函数:
创建:
int [ ] nArr = new int [ 10 ]; //一维数组 String [ ] [ ] strArr = new String [ 5 ] [ 10 ]; //二维数组 MyClass [ ] mArr = new MyClass[10]; //自定义类的数组 char [ ] chArr = { 'a', 'b', 'c', 'd' }; //静态初始化一维数组 MyClass [ ] mArr = { new MyClass(), new MyClass()}; double[ ][ ] dArr = { { 1.1, 1.2 }, { 2.1, 2.2 }, { 3.1, 3.2 } }; //静态初始化二维数组 int len = nArr.length; //获取数组长度
遍历:
for (int i = 0; i < strArr.length; i++) { //使用下标遍历 System.out.println( strArr[i] ); } for (String str : strArr) { //不使用下标遍历 System.out.println(str); }
常用函数:
1、使用java.util.Arrays工具类的方法
Arrays.asList( strArr ) //将数组转为集合,如果是int[]这些基本数据类型,需要先转化成包装类; Arrays.copyOfRange( strArr, nstart, nEnd) //返回原数组中nstart到nEnd(取不到)之间元素组成的新数组; Arrays.sort( nArr ) //对数组元素(基本数据类型)升序排序,对数组本身操作不返回新的; Arrays.toString( strArr ) //打印一维数组; Arrays.deepToString( strArr ) //打印二维数组;
Arrays.deepToString( strArr ) //打印二维数组;
2、转换成ArrayList列表后,利用其丰富的方法,ArrayList是长度可变列表;
创建:
ArrayList<String> strList = new ArrayList<String>(); ArrayList<Integer> nList =new ArrayList<>( Arrays.asList(nArr) ); //把普通数组转化成ArrayList ArrayList<String> arrayList = new ArrayList<>( Arrays.asList(strArr) );
增删改:
strList.size( ) //获取列表长度 strList.isEmpty( ) //判断列表是否为空 strList.clear( ) //清空列表 strList.toArray( ) //把列表转化为数组 strList.get( 1 ) //访问元素,开始位置为0; strList.subList( nStart, nEnd) //获取nStart和nEnd(不包含)之间的元素; strList.add( "hello" ) //在列表末尾添加元素; strList.add( 5, "hello" ) //在列表指定位置插入元素; strList.set( 5, "hello") //在列表指定位置替换元素; strList.remove( ''hello" ) //删除列表中的元素,先查找是否存在,再删除; strList.remove( 1 ) //删除列表中的索引下的元素;
查找:
strList.indexOf ( "hello" ) //查找元素第一次出现的索引,没有返回-1 strLIst.lastIndexOf ( obj ) //查找元素最后一次出现的索引,没有返回-1 strList.contains ( "abc" ) //判断元素是否存在,返回true或false
排序:
Collections.sort ( strList ) // /升序排序,对基本类型和String元素 可直接使用,对自定义类的元素 需要编写比较方法,不推荐使用 ArrayList的sort()方法; Collections.sort ( strList, Collections.reverseOrder() ) //降序排序 Collections.reverse( strList ) //反转列表顺序
java保留两位小数4种方法
方法一:String的format方法(推荐)
# String.format()打印最方便
double f = 111231.5585;
System.out.println(String.format("%.2f", f));
方法二:DecimalFormat的format方法
# 要先引入包,DecimalFormat转换最方便
import java.text.DecimalFormat;
double f = 111231.5585;
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(f));
Math函数
1.算数计算
Math.sqrt():计算平方根
Math.cbrt():计算立方根
Math.pow(a,b):计算a的b次方
Math.max( , ):计算最大值
Math.min( , ):计算最小值
Math.abs():取绝对值
2.向上,向下,四舍五入
Math.ceil():天花板的意思,就是向上取整
Math.floor():地板的意思,就是向下取整
Math.rint():四舍五入,返回double值。注意.5的时候会取偶数
Math.round():四舍五入,float是返回int,double时返回long值
Math.random(): 取得一个[0, 1)范围内的随机数