Java学习笔记(一)


一、注释

1.单行注释

//单行注释内容

2.多行注释

/*
多行
注释
内容
*/

3.文档注释

/**
	@author 指定java程序的作者
	@version 指定源文件的版本
*/

二、程序开发步骤

1.编译

javac filename.java => classname.class (字节码文件)

2.运行

java classname

三、变量、基本数据类型、运算符

1.变量声明

class Variable{
	public static void main(String[] args){ //main()是程序的入口
		int age = 10;  // 声明赋值
		int id;
		id = 5;
		System.out.println(age);
	}
}

2.数据类型

2.1数据类型分类

数据类型

2.2基本数据类型间计算

自动类型提升:容量小的与容量大运算时,结果自动提升为容量大的类型。其中,容量大小值表示表示数的范围大小,eg:float的容量大于long的容量
byte -> short -> int -> long -> float -> double
特别的,byte,short,char 做运算,结果为int

强制类型转换:自动提升运算逆运算
1. 使用强转符 ()
2. 可能造成精度损失
3. 整型常量默认为int,浮点型常量默认为double型

class Variable{
	public static void main(String[] args){
		double a = 12.2;
		int b = (int)a ;  // 将double类型强转为int类型,截断操作
		char c = ''  // 编译不通过
		char d = ' '  // char类型有且只有一个字符
	}
}

2.3字符串的运算操作

字符串可以8种基本数据类型运算,且运算只能连接运算 : “+”,运算结果仍然为String类型

class StringTest{
	public static void main(String[] args){
		String name = "lee"
		int number = 1000
		String match = name + number  // + 连接运算
		System.out.println(match) // lee1000
	}
}

3.运算符

3.1 算术运算符:

% 取模(取余)结果符号与被模数相同;

++ 自增(不改变变量类型);

前++ : 先自增,再运算
int a = 10;
int b = ++a; => a = 11 , b = 11

后++ : 先运算,后自增
int a = 10;
int b = a++; => b = 10 , a =11

– 自减

前-- : 先自减,后运算
后-- : 先运算,后自减

3.2赋值运算符

赋值运算符: = ,+= , -= , *= ,%= (不改变数据类型)

class SetValue{
	public static void main(String[] args){
		int a , b;
		a = b = 10;
		System.out.println("a = " + a + "b = " + b);
		// a++ <=> a += 1
	}
}

3.3比较运算符

== , <= , … , instanceof :检查是否是类的对象

3.4逻辑运算符

&,&& 与;|,|| 或;!非 ;^ 异或(异=>true)

&(与) &&(短路与)
相同点:
1.运算结果相同
2.当符号左边为true,二者都执行符号右边运算
不同点:
当符号左边为false,&&不再执行符号右边运算,&继续执行>右边运算

| 与 ||
相同点:
1.结果相同
2.当符号左边为false时,都执行右边运算
不同:
符号左边为true时,|继续执行右边运算,而||不再执行

开发推荐短路(&&)与短路或(||)

四、三元运算符

  1. 表达式1 表达式2 要求一致
  2. 可以嵌套使用
class TriTest{
	public static void main(String[] args){
		int m = 10;
		int n = 20;
		// (条件表达式)?表达式1:表达式2 => true 表达式1,false 表达式2
		int maximum = (m<n)?n:m;  
		System.out.println("maximum is " + maximum);
		
		int a = 10;
		int b = 20;
		int c = 30;
		int maximum2 = (a>b)?((a>c)?a:c):((b<c)?c:b);
	}
}

五、流程控制

顺序结构
分支结构
循环结构

//排序从小到大输出(if else 嵌套)
class SortTest{
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		System.out.println("input first number ");
		int num1 = scanner.nextInt();
		
		System.out.println("input second number ");
		int num2 = scanner.nextInt();
		
		System.out.println("input third number ");
		int num3 = scanner.nextInt();
		
		if(num1 >= num2){
			if(num3 < num2){
				System.out.println(num3 + "," + num2 + "," + num1);
			}else if(num3>num1){
				System.out.println(num2 + "," + num1 + "," + num3);
			}else{
				System.out.println(num2 + "," + num3 + "," + num1);
			}
		}else{
			if(num3<num1){
				System.out.println(num3 + "," + num1 + "," + num2);
			}else if(num3>num2){
				System.out.println(num1 + "," + num2 + "," + num3);
			}else{
				System.out.println(num1 + "," + num3 + "," + num2);
			}
		}
	}
}
// switch-case
// swith后跟 byte,short,char,int,枚举类型,String,6种类型 
class SwitchCaseTest{
	public static void main(String[] args){
		int num = 2;
		switch(num){
			case 0:
				System.out.println("zero");
				break;
			case 1:
				System.out.println("one");
				break;
			case 2 :
				System.out.println("two");
				break;
			default:
				System.out.println("others");
		}
	}
}
//for
// EG: 遍历100以内偶数
class ForTest{
	public static void main(String[] args){
		for(int i=0;i<=100;i++){
			if(i % 2 == 0 ){
				System.out.println(i);
			}else{
				System.out.println("odd!");
			}
		}
	}
}
// 21. while
class WhileTest{
	public static void main(String[] args){
		int i=2;
		while(i<=10){
			System.out.print(i);
			i++;
		}
	}
}
// do-while
do{
	
}while();

六、数组

1.一维数组

class ArrTest{
	public static void main(String[] args){
		int[] arr = new int[]{1,2,3,4,5};  // 静态声明
		int[] arr2 = new int[5];  // 动态声明
	}
}

2.二维数组

class TwiDimArr{
	public static void main(String[] args){
		int[][] arr1 = new int[3][1]; // 动态声明
		int[][] arr3 = new int[][]{{1,1,2},{2}};  // 静态声明
		int[][] arr4 = new int[4][];  // 动态声明	
	}
}

3.默认值

int[][] arr = new int[3][2]

外层 arr[0]  => 地址值
内层 arr[0][0] => 与一维数组默认值相同(0)

int[][] arr1 = new int[4][]

外层 arr[0] => null
内层 arr[0][0]  => 无法调用,报错
class ArraysTeat{
	public static void main(String[] args){
		
		// 1. boolean equals(int[] a, int[] b) => 判断两个数组是否相等
		// ps: char对比 'a' == 'b' ; String 对比 "abc".equals("bacd")
		int[] arr1 = new int[]{1,2,3,4};
		int[] arr2 = new int[]{2,3,4,5};
		boolean isEquals = Arrays.equals(arr1,arr2);
		
		// 2. String toString(int[] a) => 输出数组信息
		System.out.println(Arrays.toString(arr1));
		
		// 3. void fill(int[] a,int val) => 指定值填充到数组中
		Arrays.fill(arr1,10); // =>{10,10,10,10}
		
		// 4. void sort(int[] a) => 排序 
		Arrays.sort(arr2);

		// 5. int binarySearch(int[] a,int key)
		int[] arr3 = new int[]{1,2,3,4,5};
		Arrays.binarySearch(arr3,5); // => 返回索引值
	}
}
//数组复制 反转
class ArrayTest{
	public static void main(String[] args){
		
		String[] arr = new String[]{"JJ","AA","BB","TT"};
		
		// 数组的复制
		String[] arr_copy = new String[arr.length]
		for(int i=0;i<arr.length;i++){
			arr_copy[i] = arr[i] ; 
		}
		
		// 数组的反转
		// 方法一
		for(int i=0;i<arr.length/2;i++){
			String temp = arr[i];
			arr[i] = arr[arr.length-1-i];
			arr[arr.length-1-i] = temp;
		}
		
		// 方法二
		for(int i=0,j=arr.length-1;i<j;i++,j--){
			String temp = arr[i];
			arr[i] = arr[j];
			arr[j] = temp;
		}
		
		// 查找
		String obj = "BB";
		
		boolean isFlag = true;
		
		for(int i=0;i<arr.length;i++){
			if(arr[i].equals(obj)){
				System.out.println("find the word !");
				isFlag = false;
				break;
			}
		}
		
		if(isFlag){
			System.out.println("not find ");
		}	
		
		
		// 二分查找
		// 前提:所要查找的数组需要有序
		int[] arr2 = new int[]{-98,-34,2,34,54,66,79,105,210,333};
		
		int obj = -34;
		int start = 0;
		int end = arr2.length-1;
		
		notFund = true;
		
		while(start<=end){
			int middle = (start+end)/2;
			if(middle == obj){
				notFund = false;
				System.out.println("find the number , the index is " + middle);
				break;
			}else if(middle<obj){
				start = middle + 1;
			}else if(middle>obj){
				end = middle -1 ;
			}
		}		
		if(notFund){
			System.out.println("not find the number ");
		}
}

4.数组常见异常

  1. 数组角标越界异常 ArrayIndexOutOfBoundsException
  2. 空指针异常 NullPointerException
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值