Java程序设计结构

  • 数据类型
  • 变量与常量
  • 运算符
  • 字符串
  • 输入输出
  • 控制流
  • 大数
  • 数组

保留字与关键字:

关键字:目前已经有特殊作用的单词字符,例如static,class等

保留字:包括关键字,同时还有部分目前未被使用,但未来可能会被使用的单词字符

数据类型:

八种基本类型,包括

  • 四种整型:int(四字节,正负21e),short(二字节,正负三万二),

    ​ long(八字节,正负900ee),byte(一字节,-128—127)

  • 两种浮点型:float(四字节),double(八字节)

  • 一种字符型:char(二字节),用于表示Unicode编码的代码单元

  • 一种用于表真值:boolean

浮点数遵循IEEE 754规范:

NAN为非数字,例如0/0会得到Double.NAN;

无穷大(正负)是特殊浮点Double.POSITIVE_INFINITY,Double.NEGATIVE_INFINITY

变量与常量:

变量:需要显式初始化变量
boolean flag = false;
常量:使用关键字 static final 设置常量,
public static final int age = 18;
枚举类型:在有限集合内取值可以自定义枚举类型
enum Size { SMALL,MEDIUM,LARGE,EXTRA_LARGE };
Size a = SIze.SMALL;

运算符:

算数运算符(加减乘除余):+ - * / %

int类型会向下取整

数学函数:

Math.sqrt(int a):对a求平方根

Math.abs(int a) :对a取绝对值

Math.round(double a):对a四舍五入转为整型int

数据类型转换:

changeSize

实线为无信息丢失的转换,虚线为存在精度丢失的转换

关系运算符:==,!=,||,&&,<,>,<=,>=
位运算符(与,或,非,反,左移,右移):&(a),|(a),^(a),~(a),<<,>>

字符串:

子串:(subString方法)
String str = "Hello";
String s = str.subString(0,3);	//s = "Hel",即0到2
相等:(equals方法)
if(str.equals(s)){
    return false;
}
空串与Null串:
if(str.length() == 0)	//判断是否为空串:“”
if(str == null)			//判断是否为null串
构建字符串:(Stringbuilder类)
//节省空间和时间的字节构建类型,直接append添加,toString成符
StringBuilder bs = new StringBuilder();
bs.append("a");
bs.append("b");
String s = bs.toString();

输入和输出:

Util.Scanner类:
Scanner in = new Scanner(System.in);
String name = in.nextLine();
int age = in.nextInt();
格式化输出:
double x = 10000 / 3.0;
System.out.printf("%8.2f",x);	//返回八个字符,小数点算一个,且返回小数点后两位,不够八位在前补充空格
                                //x = 3333.33      
转换符:

d:十进制 x:十六进制 o:八进制 f:定点浮点数 e:指数浮点数 ….

控制流:

块作用域:{…}

块内变量不会带到块外使用,块外已定义变量不允许块内重复定义

判断:if,if-else,if-else if-else
循环:for, while, do-while
多重选择:switch-case-default
跳出:return,break,continue

大数:

java.Math包下的:BigInteger和Bigdecimal(比int和double都更加精确)

BigDecimal a = new BigDecimal("0.1");	//String转Big,精确
BigDecimal a = new BigDecimal(0.1);		//Double转Big,不精确,可能变成0.0999999998之类的

数组:

声明与初始化:
int[] a;				//声明
int[] b = new int[100];	//初始化
a = {1,2,3,4,5}			//赋值
循环:for,for-each
数组拷贝:Arrays.copyOf() :生成新数组的深拷贝
int[] c = Arrays.copyOf(a,a.length);	//第一个参数为拷贝对象,第二个参数为创建数组c的长度
数组排序:Arrays.sort():快速排序