黑马程序员----JavaSE一些常用基础知识点记录-学习日记

------- android培训java培训、期待与您交流! ----------

1.数据类型

编程即是对数据的处理,作为一个程序员,对计算机里的数据类型要有一定的了解,否则对后续的编程学习会造成很大的阻碍。

java中的数据类型。

基本数据类型大小

数据类型字节数
byte1
short2
int4
long8
float4
double 8
char2
boolean1

所对应的封装类是首字母改成大写,int 与与char 分别为Integer, Character 

自动类型转换:由低位数数据变成高位数数据,不需要显式声明。

强制类型转换:有高倒低,需要显示声明。

面试题:short a=a+5;错误 。Short a+=5正确。


2.进制问题

对二的次方运算时,“>>””<<”效率高。如3<<3的运算速度快于3*8

 

3.switch

Switch的选择类型只有四种:byte short int char(没有String!!!


4.continue,break,return

循环中得到想要的结果后需要跳出,下面三个关键字对应不同的跳出范围

1)continue跳出本次循环,到下一次循环

2)Break结束整个循环

3)Return 结束函数,返回值。


5.数组的排序问题 

选择排序与冒泡排序 Arrays.sort()

package com.cn.test;

import java.util.Arrays;

public class Sort {
	public static void BSort(int [] tmp){//冒泡排序
		for(int i=0;i<tmp.length-1;i++){
			for(int j=0;j<tmp.length-i-1;j++){
				if(tmp[j]>tmp[j+1]){
					swap(tmp,j,j+1);
				}
			}
		}
	}
	public static void SSort(int []tmp){//选择排序
		for(int i=0;i<tmp.length-1;i++){
			for(int j=i+1;j<tmp.length;j++){
				if(tmp[i]>tmp[j]){
					swap(tmp,i,j);
				}
			}
		}
	}
	public static void swap(int [] tmp,int i,int j){//交换数组中的位置
		int t=tmp[i];
		tmp [i]=tmp [j];
		tmp[j]=t;
	}
	public static void main(String[] args) {
		int[]a={3,7,3,2,6,2,4};
		int[]b={3,7,3,2,6,2,4};
		int[]c={3,7,3,2,6,2,4};
		BSort(a);
		SSort(b);
		Arrays.sort(c);
		for(int i=0;i<a.length;i++){//分别输出一样数组的三种排序后结果
			System.out.println("a["+i+"]:"+a[i]+"@@@b["+i+"]:"+b[i]+"@@@c["+i+"]:"+c[i]);
		}
	}
}



6.递归与递推

package com.cn.test;
/**
 * 求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55
 * @author Administrator
 *
 */
public class Digui {
	//递归
	static int digui (int target){
		if(target<2) return 1;
		else return digui(target-1)+digui(target-2);
	}
	//递推
	static int ditui(int target){
		int f0=1,f1=1,f=0;
		for(int i=0;i<target-1;i++){
			f=f0+f1;
			f0=f1;
			f1=f;
		}
		return f;
		
	}
	public static void main(String[] args) {
		System.out.println(digui(30));
		System.out.println(ditui(30));
	}
}

7.函数的多参数

public class MultipleParam {
	static void test(int...i){//传入形参时,函数内部还是作为数组
		for (int j : i) {
			System.out.println(j);
		}
	}
	public static void main(String[] args) {
		test(1,3,4,6,7);//传入多个参数
	}

}

8.单例模式

package com.cn.test;
/**
 * 单例模式
 */
public class SigleDemo {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		
	}
}
//饿汉式
class Ehanshi{
	private Ehanshi(){};//私有化构造方法
	private static Ehanshi e=new Ehanshi();//构造静态的对象(因为就一个实例,构造非静态的实例没意义)
	public  static Ehanshi getInstance(){//定义公有的提取对象方法
		return e;
	}
}
//懒汉式
class LanHanshi{
	private LanHanshi(){};
	private static LanHanshi l=new LanHanshi();
	public  static LanHanshi getInstance(){
		if(l==null){//延迟加载
			l=new LanHanshi();
		}
		return l;
	}
}
//懒汉式加锁
class LanHanshiJiaShuo{
	private LanHanshiJiaShuo(){};
	private static LanHanshiJiaShuo l=new LanHanshiJiaShuo();
	public  static LanHanshiJiaShuo getInstance(){
		if(l==null){//减少对锁的判断
			synchronized(LanHanshiJiaShuo.class){//为了防止多线程的单例失效,这里加一把锁
				if(l==null){
					l=new LanHanshiJiaShuo();
				}
			}
		}
		return l;
	}
}

9.折半查找

package com.cn.test;
/**
 ** 二分法查找
 */
public class BinarySearch {
	
	public static int search(int[] arr,int val){
		int start=0,end=arr.length-1;
		while(start<=end){//注意这个循环有两个收敛要素
			int mid=(start+end)/2;//第一个收敛要素,mid
			if (arr[mid]>val) {
				end=mid-1;//第二个收敛要素,start/end
			}
			else if(arr[mid]<val){
				start=mid+1;
			}
			else return mid;
		}
		return -1;
	}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int[]a={3,4,7,8,9};
		System.out.println(search (a,8));
	}

}

同样,Arrays工具了也提供了binaaySearch()方法


10.进制转换

常用计算用windows里calc的程序员模式就可以

包装类也提供了方法,如:Integer.toHexString()


11.常见面试题:final,finally,finalize的区别?

final:修饰符,修饰类时该类不能被继承,修饰变量是不能被修改,修饰函数时不能被重写。

finally:异常处理时用到,通常用作于回收未被释放的资源

finalize:被垃圾回收器回收之前的操作




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值