import java.util.Scanner; //Scanner is in this package 明确导入
import java.util.*; //通配符导入 两者性能上无区别
public class //声明类
public static void main(String[] args) //声明主函数
Scanner input = new Scanner(System.in); //创建一个Scanner对象,并将引用值赋值给input
double radius = input.nextDouble(); //键盘输入 输入的类型即为next后跟的精度 如nextInt(),nextByte()
// nextLine() 基于行的输入 即输入一整行
System.out.print //输出 不换行 "+"号可用于几个字符串之间的连接
System.out.println("The area for the circle of radius" + radius + "is" + area) //输出 换行
final double PI = 3.14159 //声明常量 常量名一般全大写 中间空格用下划线
Math.pow(2 , 3) //求2的3次幂 返回值即为2的3次幂 Math.sprt(x) //返回x的平方根
Math.abs(a) //返回a的绝对值
Math.random() //获得一个0.0到1.0间的随机double值
//通常为a + Math.random() * b 返回a到a+b间的一个随机数,不包括a+b
Math.exp(x) //返回e的x次方 Math.log(x) //返回x的自然对数(ln) Math.log10(x) //返回x的以10为底对数(lg)
//其他Math函数
//ceil() 上取整 返回双精度 floor() 下取整 返回双精度
//rint() 取最近整 若距离相等 取偶数的整数以双精度返回
//round(x) 若x为单精度数,返回(int)Math.floor(x+0.5) 若x为双精度数,返回(long)Math.floor(x+0.5)
long num 2324_4545_4519_3415L; //超过2 147 483 647的数表示时,要在后面加L
// 字面值:程序中直接出现的常量值
// 为提高可读性,java允许在一个数值型字面值的两个数字间使用下划线,如2324_4545_4519_3415L
// 可用数字加d/D/f/F表示为double或float型字面值 即直接转换为对应形式
// 如1.0/3.0 = 0.33...(小数点后16位) 而1.0F/3.0F = 0.33333334(小数点后八位)
// 科学计数法:123.456 -> 1.23456E2 / 1.23456E+2
int i = 1
++var int j = ++i; //j is 2 , i is 2
var++ int j = i++; //j is 1 , i is 2
--var int j = --i; //j is 0 , i is 0
var-- int j = i--; //j is 1 , i is 0
// 前置:自增的值本身变化 语句中的也变化
// 后置:自增的值本身变化 但语句中的不变 仍按原值计算
// 自增自减变化优先于基本运算 后置优先级优先于前置和其他基本运算 基本运算优先于异或,条件与,条件或
(double)1 //此为类型转换,将1从int型转换为double型
//java中 x1 op= x2形式的增强赋值表达式为x1 = (T)(x1 op x2) 此处T为x1的类型
boolean-expression ? expression1 : expression2
// 字符串转换为数字
// int intValue = Integer.parseInt(intString)
// double doubleValue = Double.praseDouble(doubleString)
// 格式化控制台输出
// System.out.printf(format , item1 , item2 , ... , itemk)
// e.g. System.out.printf("Count is %4.2f" , count); 输出台显示为 Count is 16.40 4代表宽度 .后的2代表小数点后精度 %f为格式符
// 常用的格式限定符
// %b 布尔值 %f 浮点数 %c 字符 %e 科学计数法 %d 十进制整数 %s 字符串
// 注意 长度小于宽度时,会在前面加空格 大于宽度时,会自动增加宽度
// 若要输出数字为12,345,678形式的 可在%后加一个, 如%,8d 若要在数字前面加0来补足位数 可在%后加一个0 如%08d
// 默认输出为右对齐 若要输出左对齐的格式 可在%后加一个- 如%-8d
// \n 换行符 \" 双引号 \\ 反斜杠
// 输出重定向 java ClassName > output.txt output.txt为自己设定的一个文本文件
// 输入重定向 java SentineValue < input.txt input.txt为自己设定的一个文本文件
// 可在同一命令中同时使用输入重定向与输出重定向 如 java SentineValue < input.txt > output.txt
// continue只是跳出了一次迭代 break是跳出了整个循环
// java中一维数组的通常写法为 elementType[] arrayRefVar
// 创建 elementType[] arrayRefVar = new elementType[arraySize] 或 elementType[] arrayRefVar = {value1 , value2 , value3};
// 可以通过 arrayRefVar.length 得到数组的大小 数组初始值 若为数值型 为0 若为char型 为'\u0000' 若为boolean型 为false
// foreach循环可以顺序遍历整个数组,不需要使用下标变量 格式为 for(elementType element: arrayRefVar){} 如 for(double e: mylist){}
// 复制数组方法 1. 循环 2. System中的静态方法arraycopy 3. 使用clone方法复制数组
// arraycopy(sourceArray, srcPos, targetArray, tarPos, length) sourceArray为原数组 targetArray为复制数组 srcPos,tarPos为起始点
// e.g. System.arraycopy(sourceArray, 0, targetArray, 0, sourceArray.length); 注意 采用此方法需事先创建目标数组并分配内存空间
// 对于基本数据类型 java中是按值传递 对于数组类型参数 则是引用传递 注意 方法可以返回数组 返回的为改变后的数组 即数组的引用
// 可变长参数列表 typeName... parameterName 只能在方法中指定一个 同时该参数必须是最后一个参数 任何常规参数必须在它之前
// 在java中 将可变长参数当成数组对待 可以将一个数组或数目可变的参数传递给可变长参数
// java.util.Arrays类包含许多静态方法 如实现数组的排序 查找 数组的比较 填充数组元素 返回数组的字符串表示
// java.util.Arrays.sort(numbers) java.util.Arrays.parallelSort(numbers) 排序整个数组numbers
// java.util.Arrays.sort(char, 1, 3) java.util.Arrays.parallelSort(char, 1, 3) 排序部分数组 从char[1]到char[3]
// java.util.Arrays.binarySearch 采用的是二分查找 要求数组必须事先按升序排好
// java.util.Arrays.binarySearch(list, 11) 查找数组中11关键字 若找到 返回index 若未找到 返回-(insertionIndex + 1)
// java.util.Arrays.binarySearch(chars, 'a') 查找字符数组中的a 若找到 返回index 若未找到 返回-(insertionIndex + 1)
// java.util.Arrays.equals(list1, list2) 检测两个数组是否严格相等 返回true或者false
// java.util.Arrays.fill(list1, 5) 将5填充到list1中 java.util.Arrays.fill(list2, 1, 5, 8) 将8填充到list2[1]到list2[5]中
// java.util.Arrays.toString(list) 返回一个字符串,该字符串代表了数组中的所有元素
// 二维数组 elementType[][] arrayRefVar = new elementType[5][5] 第一个为行 第二个为列 均从0开始
// 行数获取 x.length 每行的长度 x[0].length
// 不规则数组的创建 int[][] arr = new int [3][]; arr[0] = new int[5]; arr[1] = new int[3]; arr[2] = new int[1];
// 二维数组也可传递给方法 传递的也为数组的引用