控制台输出带颜色字符
字体颜色30~37 背景颜色40~47 1 加粗 ; 隔开 90~97字体颜色变亮
System.out.println("\033[1;93;45m" + "颜色"+"\033[m");
增强for循环
格式
for(数据类型变量名 : 被遍历的集合(collection)或者数组) {
执行语句
}
案例
案例中的array为变量名称可改动
在普通数组中的使用
int[] array = {1,2,3,4,5,6,7,8,9,0,};
for (int item : array) {
System.out.println(item);
}
在二维数组中的使用
int array2[][] = {{1,2,3}, {4,5,6}, {7,8,9} };
for (int arr[] : array2) {
for (int item : arr) {
System.out.println(item);
}
}
ArrayList中的使用
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
list1.add(5);
list1.add(6);
list1.add(7);
for(Integer item : list1){
System.out.println(item);
}
final关键字
final
作用
●final 关键字是最终的意思,可以修饰(类、方法、变量)
●修饰类:该类被称为最终类,特点是不能被继承了。
●修饰方法: 该方法被称为最终方法,特点是不能被重写了。
●修饰变量: 该变量只能被赋值一次。
final修饰变量的注意
●final修饰基本类 型的变量,变量存储的数据不能被改变。
●final修饰 引用类型的变量,变量存储的地址不能被改变,但地址所指向对象的内容是可以被改变的。
常量
常量
●使用了static final修饰的成员变量就被称为常量;
●作用:通常用于记录系统的配置信息。
使用常量记录系统配置信息的优势、执行原理
●代码可读性更好,可维护性也更好。
●程序编译后,常量会被“宏替换”:出现常量的地方全部会被替换成其记住的字面量,这样可以保证使用常量和直接用字面量的性能是一样的。
方法递归
概述
- 递归是一种算法,在程序设计语言中广泛应用。
- 从形式上说:方法调用自身的形式称为方法递归( recursion)。
- 直接递归:方法自己调用自己。
- 间接递归:方法调用其他方法,其他方法又回调方法自己。
- 递归如果没有控制好终止,会出现递归死循环,导致栈内存溢出错误(Stac)。
递归的三要素
- 找到递归的公式
- 找到递归的终结点
- 递归的方向必须走向终结点
字符集
常用字符集
标准ASCII字符集
- ASCII(American Standard Code for Information Interchange):美国信息交换标准代码,包括了英文、符号等。
- 标准ASCII使用1个字节存储一个字符,首尾是0,总共可表示128个字符,对英文来说完全够用。
GBK (汉字内码扩展规范,国标)
- 汉字编码字符集,包含了2万多个汉字等字符, GBK中一个中文字符编码成两个字节的形式存储。
- 注意:GBK兼容了ASCII字符集。
- GBK规定:汉字的第一个字节的第一位必须是1
Unicode字符集(统一码, 也叫万国码)
Unicode是国际组织制定的,可以容纳世界上所有文字、符号的字符集。
UTF-32
- 4个字节表示一个字符。
- 占存储空间,通信效率变低!
- 基本上不使用。
UTF-8
●采取可变长编码方案,共分四个长度区: 1个字节,2个字节, 3个字节,4个字节。
●英文字符、数字等只占1个字节(兼容标准ASCI|编码) ,汉字字符占用3个字节。
UTF-8编码方式(二进制) |
0XXXXXXX (ASCII码) |
110XXXXX 10XXXXXX |
1110XXXX 10XXXXXX 10XXXXXX |
11110XXX 10XXXXXX 10XXXXXX 10XXXXXX |
注意:技术人员在开发时都应该使用UTF-8编码!
小结
- ASCII字符集:只有英文、数字、符号等,占1个字节。
- GBK字符集:汉字占2个字节,英文、数字占1个字节。
- UTF-8字符集:汉字占3个字节,英文、数字占1个字节。
注意1:字符编码时使用的字符集,和解码时使用的字符集必须一致,否则会出现乱码。
注意2:英文,数字一般不会乱码,因为很多字符集都兼容了ASCII编码。
编码解码
编码
编码是把字符按照指定字符集编码成字节。
String提供了如下方法 | 说明 |
byte[ ] getBytes( ) | 使用平台的默认字符集将该String编码为一系列字节,将结果存储到新的字节数组中 |
byte[ ] getBytes(String charsetName) | 使用指定的字符集将该String编码为一系列字节 ,将结果存储到新的字节数组中 |
解码
解码是把字节按照指定字符集解码成字符。
String提供了如下方法 | 说明 |
String(byte[ ] bytes) | 通过使用平台的默认字符集解码指定的字节数组来构造新的String |
String(byte[ ] bytes, String charsetName) | 通过指定的字符集解码指定的字节数组来构造新的String |
一些方法
math方法
double Math.sqrt(a) | 将a开平方根 |
int Math.round(a) | 将a四舍五入到整数 |
Math.log(a) | 以e为底a的对数 |
Math.log10(a) | 以10为底a的对数 |
Math.floor(a) | 小于a的最大整数 |
Math.ceil(a) | 大于a的最大整数 |
Math.expm1(a) | e的a次方-1 |
Math.expm(a) | e的a次方 |
字母转换
ch.toUpperCase() | 将小写字母ch转为大写字母 |
ch.toLowerCase() | 将大写字母ch转为小写字母 |
控制小数点位数(四舍五入)
利用format
import java.text.DecimalFormat; | 导包 |
DecimalFormat df = new DecimalFormat("0.000"); | 设置保留位数(该例子为保留三位小数) |
df.format(n) | (结果为String型) |
double t1 = 4654.5231;
double t2 = 456.154
DecimalFormat df = new DecimalFormat("0.0");
System.out.println(df.format(new BigDecimal(t1 / t2)));//计算精度更高
利用BigDecimal中的setScale方法
import java.math.BigDecimal; | 导包 |
import java.math.RoundingMode; |
setScale(int newScale, RoundingMode roundingMode) | 第一参数表示要保留的小数位数,第二个参数决定保留小数的方式 |
RoundingMode.UP | 向远离0的方向舍入 |
RoundingMode.FLOOR | 向负无穷方向舍入 |
RoundingMode.DOWN | 向零方向舍入 |
RoundingMode.CEILING | 向正无穷方向舍入 |
RoundingMode.HALF_ EVEN | 向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入,例如1.55保留一位小数结果为1.5。 |
RoundingMode.HALF_ UP | 向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入,1.55保留一位小数结果为1.6 |
double tt = 4654.5231;
System.out.println(new BigDecimal(tt).setScale(2, RoundingMode.UP));