首页 > 技术文章 > java核心技术卷一 (1-3章:基本数据类型和String等)

lin-bunny 2020-09-26 18:13 原文

java中的基础数据类型

1. 4种整型 byte short int long 1 2 4 

2. 2种浮点 float double 4 8

3. 1种布尔 boolean  

char 类型 (用于表示单个字符、有些unicode字符可以用一个char描述,有些需要2个char描述)

1. Unicode和char 

  Unicode 用来对世界上所有语言的所有字符进行编码

  java的char采用16位,但随着加入汉语,韩语等语言,16位的char已经无法满足描述所有的Unicode字符

    java中采用码点来解决无法描述所有Unicode字符这个问题, 具体不展开说明

  码 点 ( code point ) 是指与一个编码表中的某个字符对应的代码值。

  UTF-16 编码采用不同长度的编码表示所有 Unicode 码点。

    在java中,char 描述UTF-16编码中一个代码单元。不建议使用char ,除非需要处理UTF-16代码单元。建议使用字符串String

boolean 类型 只有2个值,true和false,整型值和布尔值不能相互转换

 

变量

1. 如果想要知道哪些Unicode字符属于java中的字符,可以使用Character来检查

2.不建议使用这种风格 int i j;声明变量,逐一声明变量可以提高代码的阅读性。

变量初始化

1.声明变量后,必须使用赋值语句对变量进行显示初始化。=== 在使用的时候

 

常量

1.使用final修饰,一旦赋值之后就不能更改了。

类常量

1.使用 static final 修饰,如果加上了public ,那么在其他的类也可以使用这个类常量

 

运算符

+ - * / (如果一个整数除以0,则会产生一个异常,如果是float除以0,则会得到一个NaN数)

 

strictfp关键字

1.对于使用strictfp关键字标记的方法,必须使用浮点计算来生成可再生的结果。

Math 类

1. 平方根 Math.sqrt(x) x开平方

2. 幂运算 Math.pow(a,b) a的b次幂

3. 取余 Math.floorMod(value, number) value 对 number取余

4.不必在数学方法名和常量名前添加前缀“ Math”,只要在源文件的顶部加上下面 这行代码就可以了。

import static java.1ang.Math.*; 例如:
System.out.println("The square root of \u03C0 is " + sqrt(PI));

 

String 字符串

1. 想要得到String的实际长度,即码点数量,coinPointCount(0, str.length()); 

2. 想要得到第i个码点,int index = str.offsetByCoinPoint(0,i); int cp = str.coinPointAt(index);

3. str.length();返回UTF-16代码单元的数量

String 字符串码点数组和字符串之间的相互转换

1. int[] codePoints = str.codePoints().toArray();

   String str = new String(codePoints, 0, coinPoints.length());

 

StringBuffer和StringBuilder的区别

1.StringBuffer效率有点第,但允许采用多线程多方式执行添加和删除字符

2.StringBuilder,可以理解为StringBuilder是为了提高StringBuffer的效率而新增的。如果一个字符串在一个单线程中编辑,使用StringBuilder

 

3. 常用的api

  length();

  append();

  appendCodePoint();

  setCharAt();

  insert();

  delete();

  toString();

 

System.out.printf(); 可以控制格式化输出各种标志

  举例一些简单常用的输出 %s 代表输出String字符, %d代表输出十进制整数, %f代表输出浮点数,%8.2f 8代表8个字符,2代表消暑点后多少位,f代表浮点

  1. System.out.printf("%8.2f", 3333.33333); //输出一个空格和7个字符,其中有2个小数点 " 3333.33"

  2. System.out.printf("hello, %s next year you will be %d", name, age);//输出"hello, name next year you will be age",其中name是字符串,age是十进制整数

  3. System.out.printf("%,.2f", 3333.3333333);//输出3,333.33

  可参考printf的标志表,查看输出规则。

 

格式化的字符串,这个有时候比较常用

  1.可以使用s转换符格式化任意对象,对于实现了Formattable接口的对象都将调用formatTo方法,否则调用toString方法。

它可以将对象转换为字符串。

  String massage = String.format("Hello, %s. Next year, you'll be %d", name , age);

  2.时间的输出或者格式化

  System.out.printf("%tc", new Date());//完整的日期和时间

  System.out.printf("%tT", new Date());//24小时时间

 

 

 

 

 

 

根据以上列表数据,如有需要,可据表查询需要的日期格式。

System.out.printf("%l$s %2$tB %2$te, %2StY", "Due date:", new Date());//以%百分号开始,$结束,表示第几个参数格式化的格式
如上,代表第一个参数输出字符,第二个对应表的B,同样第二个对应e等。

参教索引值从i 开始,而不是从o开始, 对第1个参数格式化这就避免 了与 0 标志混淆 

 

大数值

2个类,BigInteger 、BigDecimal

BigInteger : 实现类任意精度大整数运算

BigDecimal : 实现了任意精度大浮点数运算

1.大数值运算中不能使用+和*,需要使用add和multiply方法

BigInteger c = a.add(b);//c=a+b

BigInteger c = a.multiply(b);//c = a*b;

 

java中跳出多层嵌套

  1.通过label标签。注意,标签必须放在希望跳出大语句的前面,并跟着一个:号。

  实例:

    

class Main {
    public static void main(String[] args) {
        int i=0;
        outer:
        for (;true;) {
            inner:
            for (; i<10; i++) {
                System.out.println("i = " + i);
                if (i==2) {
                    System.out.println("continue");
                    continue;
                }
                if (i==3) {
                    System.out.println("break");
                    ++i;
                    break;
                }
                if (i==7) {
                    System.out.println("continue outer");
                    i++;
                    continue outer;
                }
                if (i==8) {
                    System.out.println("break outer");
                    break outer;
                }
                for (int k=0; k<5; k++) {
                    if (k==3) {
                        System.out.println("continue inner");
                        continue inner;
                    }
                }
            }
        }
    }
}

  

当值等于8的时候,break到标签,会跳出多个循环嵌套。

 

推荐阅读