Java数据类型 8 个
四个整型:byte int long short
两个浮点型:float double
一个字符型:char
一个真值:boolen
Unicode与char
Unicode是一个编码机制,在UTF-16机制中,用不同长度的编码表示Unicode码点,用代码单元进行表示,char代表一个代码单元
Java中0 1 与 true false不互通
变量
声明一个变量后注意对其进行初始化,否则不能使用(C++中默认赋值)
常量
用final修饰,关键字final表示这个变量只能被赋值一次,不能再被更改
类常量
一个类中可以被多个方法调用的常量,用static final修饰,定义在main函数外部,如果加上public也可以被其他类使用
运算符
0除整数会报异常,0除浮点数得到无穷或NaN
math类
sqrt(),pow()
例如sqrt没有处理对象,是一种静态方法
在程序前加入 import static java.lang.Math.*
就可以直接调用函数,不需要每次都写Math
类型转换
整数转浮点数会有精度丢失
转换优先级:double>float>long>int
强制类型转换
double x = 9.99;
int nx = (int)x;
浮点数四舍五入Math.round()仍需使用强制转换,因为round返回的是long类型,不是int
int nx = (int)Math.round(x);
++n,整体先加1
n++,整体不变
字符串
Java中字符串是不可变的,在编译器中默认共享,字符串变量只是引用其地址,类似指针
检查两个字符串是否相等s.equla(t)
Java中不可以用==判断字符串,C++中对 = =进行了重载,但在Java中= =还是用来比较地址
构建字符串 StringBuilder StringBuffer
StringBuilder 用法
StringBuilder builder = new StringBuilder();
builder.append(aa);
builder.append(bb);
String fin = builder.tostring();
StringBuffer是StringBuilder的前身
StringBuffer效率低,但允许采用多线程方法执行字符操作,属于线程安全,适用于多线程。StringBuilder效率高,但线程不安全,适用于单线程。
string为什么是不可变的?
因为string用final修饰,所以是不可变的,属于线程安全。
StringBuilder和StringBuffer继承于AbstractStringBuilder,并没有用final修饰,所以是可变的
输入
构造一个scanner对象,与标准输入流System.in关联
import java.util.*;
Scanner in = new Scanner(System.in);
String name = in.next();
for each 循环
int[] a = new int[100];
for(int x:a){
System.out.print(x);
}