变量尽可能靠近使用的地方
常量 大写
类常量 用static final修饰(定义在main函数方法以外)
实线:无信息丢失
虚线:可能损失精度
实线转换到虚线无需强制转换类型 自动转换
Math.round(); 将数组转换成离他最近的整数 (也需要强制转换)
位运算符 用来操作二进制
3<<1 左移1位 32(1)=6
3<<2 左移2位 32(2)=12
右移 除以2的次幂运算
6>>2=1 带余除法 不要余数
String类
两个字符相等 但是不区分大小写时 用equalsIgnoreCase();
==是判断地址
Sting只有字符串常量共,+或者subString 操作产生的结果不共享
空串和NULL串
空串 String a="";
null串 String b=null;
空串:长度0 内容为空的字符串
null串:没有任何对象和该变量关联
判断字符串是否为空
if(str.lengh()==0)
或者
if(str.equal(""))
判断字符串是否为null
if(srt==null)
判断既不是null也不是空串
if(str!=null&&str.length()!=0)
首先要检查str是否为null 因为在null串上调用方法 会出现错误
StringBuider 由较短字符串构建字符串时使用
前身StringBuffer 效率低 但是允许采用多线程的方式执行添加或者删除
单线程使用StringBuider
读取输入
Scanner
一种简单的文本扫描器 读取一个文本文件
Scanner in=new Scanner(new File("D:\\IO\\TEST.txt"));
while (in.hasNext()) {
String str = in.nextLine();
System.out.println(str);
}
printf格式化输出System.out.printf("%tc",new Date());
for 循环体 使用内部变量
int i=0;
for(i=0;i<10;i++)
BigInteger long double 无法满足时
int k=60;
int n=490;
BigInteger kit=BigInteger.valueOf(1);
for (int j = 1; j <=k; j++) {
kit=kit.multiply(BigInteger.valueOf(n-j+1)).divide(BigInteger.valueOf(j));
}
System.out.println(kit);
数组
二维数组 在数组中创建数组
不规则数组 创建 调用Arrays工具类方法输出
public class Array_1 {
public static void main(String[] args) {
// 不规则数组 创建 调用Arrays工具类方法输出
int[][] a=new int[3][];
a[0]=new int[2];
a[0][0]=13;
a[0][1]=14;
System.out.println(Arrays.toString(a[0]));
}
}
创建二维数组并打印
public class Array_2 {
public static void main(String[] args) {
int[][] a={{1,2},{1,2,3,4},{5,6,7}};
// 读取数组 按行读取
/* for (int[] num:a)
{
System.out.println(Arrays.toString(num));
}*/
// 读取数组 按照个数读取 可以
for (int[] num: a )
for (int num1:num){
System.out.println(num1);
}
}
}
通过不规则输出 输出数组三角形
public class Array_Test1 {
public static void main(String[] args) {
final int NMAX=5;
int[][] odd=new int[NMAX+1][];
// 创建数组三角形
for (int i = 0; i <odd.length; i++) {
odd[i]=new int[i+1];
}
// 赋值
for (int i = 0; i <odd.length; i++) {
for (int j = 0; j <odd[i].length; j++) {
odd[i][j]=(int)(Math.random()*10+1);
}
}
// 输出结果
for (int odds[]:odd){
System.out.println(Arrays.toString(odds));
}
}
}
选择排序
package JavaSE.Unit3;
/**
* @ClssName selectionTest
* @Autor Yu
* @Description TODO
* @Date 2019/2/27 21:00
* Version 1.0
* 选择排序最优算法
*/
public class selectionTest {
public static void main(String[] args) {
int[] arr={9,16,21,18,59,51,60};
int temp=0;
for (int i = 0; i <arr.length-1; i++) {
for (int j = i+1; j <arr.length; j++) {
if (arr[i]>arr[j]){
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}
}
冒泡排序及优化
package JavaSE.Unit3;
import java.util.Arrays;
/**
* @ClssName bubbleTest
* @Autor Yu
* @Description TODO
* @Date 2019/2/28 20:15
* Version 1.0
* 冒泡排序
*/
public class bubbleTest {
public static void main(String[] args) {
System.out.println("*************************");
int[] staff={6,1,7,5,4,9};
int temp=0;
for (int j = 0; j <staff.length-1; j++) {
boolean flog=true;
for (int i = 0; i < staff.length-j-1; i++) {
if (staff[i] > staff[i + 1]) {
temp = staff[i];
staff[i] = staff[i + 1];
staff[i + 1] = temp;
flog=false;
}
}
System.out.println(flog);
if (flog)
break;
System.out.println(Arrays.toString(staff));
}
}
}
二分查找
import java.util.Arrays;
/**
* @ClssName BinarySearchTest
* @Autor Yu
* @Description TODO
* @Date 2019/2/28 20:48
* Version 1.0
* 二分查找
*/
public class BinarySearchTest {
public static void main(String[] args) {
int[] arr={30,20,50,10,80,9,7,12,100,40,8};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
System.out.println(myBinarySearch(arr,40));
}
private static int myBinarySearch(int[] arr, int value) {
int low=0;
int high=arr.length-1;
while (low<=high){
int mid=(low+high)/2;
if (value==arr[mid])
return mid;
if (value>arr[mid]){
low++;
}
if (value<arr[mid])
low--;
}
return -1;
}
}