JAVA笔记一:基础知识

基础知识

一、注释

 1. //
 2. /* */
 3. /**
	XXXX自动生成文档
	*/

二、JAVA数据类型

类型 储存需求(Byte) 取值范围
int 4 -2 147483 648 ~ 2 147 483647( > 20亿)
short 2 -32 768 ~ 32767
long 8 -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807
byte 1 -128 ~ 127
float 4 大约 ± \pm 3.402 823 47E+38F(有效位数为6 ~ 7位)
double 8 大约 ± \pm 1.797 693 134 862 315 70E+308(有效位数为15位)
char 2 \u0000 ~ \uffff(char描述了UTF-16编码的一个代码单元)
boolean 1bit false和true

注意细节

  • 长整型数字后缀L或者l(如4000000000L)。十六进制数值有一个前缀0x或0X(如0xCAFE)。八进制有前缀0。
  • 从Java7开始,0b或0B表示二进制,还可以在数字内加下划线更易读(4_000_000_000L)。
  • double精度是float类型的两倍,float有后缀F或f,没有后缀的浮点数默认为double,也可以加D或d。
  • 注意转义字符(\u0000 ~ \ufffff),\uxx,在任何时候都会进行转义,包括注释行,因此可能会产生错误。

三、变量与常量

  • 声明一个变量后必须用赋值语句显示初始化才能被使用。
  • 利用关键字final指示常量,且只能被赋值一次,赋值之后不可再更改。
final double CM_OER = 2.54
import static java.lang.Math.*;
  • 数学函数 Math.sin, Math.exp, Math.PI …

3.1类型转换

3.1.2 隐式转换

有两个操作数a,b
如果有一个double,另一个也会转为double;
否则如果有一个float,另一个也会转为float;
否则如果有一个long,另一个也会转为long;
否则都将转为int。
如下图所示,虚线表示转换可能会损失精度。
在这里插入图片描述

3.1.2 强制类型转换

强制转换可能会截断成完全不同的值,注意!

double x = 9.997;
int nx = (int) x;

3.2 位运算符

& // and
| // or
^ // xor
~ // not

3.3 运算符优先级

运算符由高到低
[] . ()(方法调用)
! ++ – +(一元运算符) - (一元运算符) () (强制类型转换) new
* / %
+ -
<< >> >>>
< <= > >= instanceof
== !=
&
^
\mid
&&
\mid \mid
?:
= += -= *= /= %= &= \mid = ^= <<= >>= >>>=

3.3不可变字符串

	java.lang.string 1.0
1. substring(index, endIndex)
	String greeting = "Hello";
	String s = greeting.substring(0, 3);// Hel endIndex - 1
2. +
	String sJoin = s + greeting ;//HelloHel
3. join(sep, str...)
	String all = String.join("/", "s", "m", "l", "xl")// s/m/l/xl
4. equals
	s.equals(greeting); //不要使用"=="判断是否相等,"=="只会判断是否放置在同一位置上
5. 空串与Null串
	str.length() == 0  || str.equals("");
	String s = null;//此时不可调用方法,否则会报错 java.lang.NullPointerException
	s == null //判断是否为空
6. string api
	char charAt(int index)
	boolean equals(Object other)
	int length()
	String replace(oldString, newString)
	String substring(beginIndex)
	String substring(beginIndex, endIndex)
7. StringBuilder 字符串构建器,高效拼接字符串 java.lang.StringBuilder 5.0
	StringBuilder builder = new StringBuilder();
	builder.append(ch);
	builder.append(str)
	String str = builder.toString();
api
	StringBuilder()
	int length()
	StringBuilder append(String str),StringBuilder append(char c)
	void setCharAt(int i, char c)
	StringBuilder insert(int offset, String str),StringBuilder insert(int offset, char c)
	String toString()
	

四、输入与输出

4.1 输入

java.util.Scanner 5.0
Scanner in = new Scanner(System.in);
String nextLine()
String next()
int nextInt()
double nextDouble()
boolean hasNext()
boolean hasNextInt()
boolean has NextDouble()

五、循环、数组

  1. 带标签break,可用于跳出多层循环
label:
for(){
	for(){
		if()	break label;
	}
}//jump here,跳到label的语句块之后。
  1. 大数值 BigInteger BigDecimal(整型和浮点型)
(1) BigInteger a = BigInteger.valueOf(100);
(2) Bigdata API  java.math.BigInteger 1.1
	BigInteger add(BigInteger other), subtract(), multiply(), divide(), mod() 
	int compareTo(BigInteger other)
	static BigInteger valueOf(long x)
  1. 数组
(1) 初始化
	int[] a;
	int a[];
	
	int[] smallPrimes = {2, 3, 5, 7};
	smallPrimes = new int[] {5, 6, 7 ,8 ,9};
	int[] a = {1 , 2, 3};
	smallPrimes = a;//  ----1
	smallPrimes = rrays.copyOf(a,3);// ----2
	
	int[] a = new int[0];
	int[]a = {};
	
	a = new int[100];//默认初始化为0
	String[] names = new String[10] // 默认初始化为null
(2) for each
	for(variable : collection) statement; //clllection 是一个数组或者实现了Iterable接口
	for (int element : a)
		System.out.println(element);
(3) 浅拷贝与深拷贝
	如上面代码1表示浅拷贝,2表示深拷贝。浅拷贝只会指向同一数组内存。
(4) java.util.Arrays 1.2 API
	static String toString(type[] a) 5.0
	static type copyOf(type[] a, int length) 6
	static type copyOf(type[] a, int start, int end) 6
	static void sort(type[] a)
	static int binarySearch(type[] a, type v)
	static int binarySearch(type[] a, int start, int end, type v) 6
	static void fill(type[] a, type v)
	static boolean equals(type[] a, type[] b)
(5) 多维数组
	int[][] a = new int[10][10];

猜你喜欢

转载自blog.csdn.net/hunt_ing/article/details/83305005