Core Java 第三章总结

最近下定决心入坑后端了,要学的比较多,首先本周把之前看的Core Java复习一遍。

VIO课结课了,拿了优秀学员,但是可能不会去做这个了吧,有空把作业内容补上来

 

 

数据类型:8种基本类型
整型4种
int 4 short 2 long 8 byte 1
浮点2种
float 4 double 8(大部分都用double)
用p不是e
非数值:
无穷大 Double.POSITIVE_INFINITY
小。。。NEGATIVE
NaN:0/0或负数平方根
非数值都认为不等
浮点不能用if(x==Double.NaN)
要用if(Double.isNaN(x))
保证精度的场合需要BigDecimal类
char 不怎么用
UTF-16 2-4个字节
boolean 和C不同不能直接和整型转换
 
变量:每个变量属于一个类型type
声明后必须显式初始化。
声明尽可能靠近第一次使用的地方
final关键字指示常量,赋值后不能更改
类常量:static final, 定义在main方法外,所有类中方法都能用
 
运算符
与或非&& || !,三元 a?b:c
移位>>>用0填充,>>根据符号数填充(补码)
 
类型转换:规则和c一样,强制类型转换也是加括号
运算符级别同C
 
枚举类型:
enum Size{ Small, Medium, Large};
Size s = Size.Medium;//可以写null
 
字符串:实际上是Unicode序列,标准库中有预订义类String
s.substring(a,b);
拼接用+ 任何对象都能转成String
Java中字符串不可更改,只有新字符串!
但是存储区可以共享(指针指向同一个)
s.equals和==不同,一个比较内容,一个比较引用。(记得String的equals方法被重载过,看到了回来确认)
API太多了
 
StringBuilder类
new出一个对象,不断append添加内容,可以用setCharAt更改字符,以及insert插入,以及delete,最后输出时toString()
StringBuilder 在添加字符时不同于StringBuffer有Sychronized关键字,导致线程不安全,这两个类都是通过底层的char数组以及控制一个count数值控制字符串大小。
 
final变量的访问在编译期间都会直接被替代为真实的值
 
输入输出——第三章讲不细
输入Scanner in = new Scanner(System.in); //import java.util.*;
in.nextLine(); in.next()
也可用console
Console con = System.console();
con.readline();
 
IDE的Console可能不能启动
 
在jdk说明文档中,对console类的描述为:
访问与当前 Java 虚拟机关联的基于字符的控制台设备(如果有)。
虚拟机是否具有控制台取决于底层平台,还取决于调用虚拟机的方式。如果虚拟机从一个交互式命令行开始启动,且没有重定向标准输入和输出流,那么其控制台将存在,并且通常连接到键盘并从虚拟机启动的地方显示。如果虚拟机是自动启动的(例如,由后台作业调度程序启动),那么它通常没有控制台。
如果此虚拟机具有控制台,那么它将由此类唯一的实例(可通过调用 System.console() 方法获得)表示。如果没有可用的控制台设备,那么对该方法的调用将返回 null。
 
 
格式化输出 printf("%.2f",10000./3.);
 
 
控制流程
块作用域{}
if else while() do while(); for(;;) for(type e: array)
switch(choice){
case 1: break;
case 2: break;
default: break;
}
case 可以是常量表达式、枚举、字符串字面值
 
BigDecimal
不太重要,主要表示价格用,详细使用遇到再查。性能比常量差。
 
数组:*
int[] a; int a[]; 声明等价
初始化时需要new关键字。 int[] a = new int[100];
数字数组全初始化为0
数组不可扩容,有相应需求用array list 数组列表
* foreach式循环的对象必须是数组或者是实现了Iterable接口的类对象
java可以初始化匿名数组同时赋给变量(等价于重新初始化) array = new int[] {1,2,3,4,5};
数组拷贝 使一个变量引用同一个数组 int[] array2 = array1; 此时array1[0]==array2[0];
copyOf方法会拷贝到新的存储区,并根据参数重新定义数组大小
数组排序用sort,内部是快排
 
多维数组:double[][] balances;
初始化也是给尺寸balance= new double[2][3];
可以不知道尺寸直接初始化balance={{1,2},{2,3}};
多维数组不支持一次性foreach,每一层都要单独调用foreach
 
不规则数组:多维数组实际上是数组的数组(理解为double **,指针的数组),可以自己给每一行单独初始化长度
posted @ 2019-09-20 11:26  CaptainL  阅读(168)  评论(0编辑  收藏  举报