java基础

Java语言的三种技术框架:EE,SE,ME(学SE,企业用EE)

框架应用方向
JavaSE基础,应用于桌面程序开发
JavaEE高级,针对于企业级开发
JavaME高级,针对于嵌入式软件开发

java基础知识1

JRE(Java Runtime Environment) : java运行环境=jvm+核心类库
JDK(Java Development Kit) : java开发工具包=开发工具+JRE
jvm:如果你配置了虚拟机的classpath,则会在你配置的classpath找类,如果没有,会在当前目录下找
重载(overload):发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同,发生在编译时。
重写(overwrite):发生在父子类中,方法名、参数列表必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类;如果父类方法访问修饰符为 private 则子类就不能重写该方法。
基本数据类型:byte,short,int,long,float,double,char,boolean
引用数据类型: class,interface,数组

//正确,a+=1,会进行自动类型转换,所以不会报错
   byte a=3;
        a+=1;
        System.out.println (a);
//错误,1的类型是int,a的类型是byte,可以会发生损失,编译期出错
   byte a=3;
        a=1+a;
        System.out.println (a);

位运算符:与或非,异或
逻辑运算符:与或非,&&,||,!

		  /**
         * &:不管前面的条件是否正确,后面都执行
         * &&:又称为短路运算符,当前面为false时,后面不会执行
         */
  		int i = 1;
        if(i==2 & i++==2){}
        System.out.println(i);
        
        int j=1;
        if(j==2 && j++==2){}
        System.out.println(j);

异或:相同为0,不同为1

		 /**
         * 2个数字的交换
         */
 		int a=3;
        int b=4;
        //使用中间变量
        int temp;
        temp = a;
        a = b;
        b = temp;
        System.out.println (a+" "+b);
        //使用异或,利用3^4^4=3
        a = a^b;
        b = a^b;
        a = a^b;
        System.out.println (a+" "+b);
		
        a=a+b;
        b=a-b;
        a=a-b;
        System.out.println (a+" "+b);

循环使用: for,while,do-while

进制转换:将一个数字转换为任意进制的数字
//16进制的转换
 public static void main(String[] args){
        int num=60;
        String str_eight=toEight(num);
        System.out.println(str_eight);
        String str_two=toTwo(num);
        System.out.println(str_two);
        String str_hex=toHex(num);
        System.out.println(str_hex);
    }
    public static String toEight(int num){
        return "8进制"+trans(num,7,3);
    }
    public static String toTwo(int num){
        return "2进制"+trans(num,1,1);
    }
    public static String toHex(int num){
        return "16进制"+trans(num,15,4);
    }
    public static String trans(int num,int base,int offset){
        //建立表
        char [] chs= {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E'};
        //创建临时容器
        char [] arr = new char[32];
        //创建临时容器的角标
        int index = arr.length;
        //循环
        while(num!=0){
            int temp = num & base;
            System.out.println (temp);
            arr[--index] = chs[temp];
            num=num >>> offset;
        }
        String temp1="";
        for(int i = index;i<arr.length;i++){
            temp1=temp1+arr[i];
        }
        return temp1;
    }

java基础知识2

jvm内存区划分:

区域作用线程是否私有
程序计数器指向下一条需要执行的字节码指令
虚拟机栈java方法执行的区域
本地方法栈Native方法执行的区域
对象实例存放的区域
方法区常量池和类型的卸载

sun使用的HotSpot虚拟机将虚拟机栈和本地方法栈放在一起,将堆和方法区放在一起实现。

在这里插入图片描述
选择排序+冒泡排序+二分查找:设整数数组长度为10,下标0—9

内容思路
选择排序外层for控制循环次数,内层for查找最小的元素
冒泡排序外层for循环控制循环次数,内层for循环控制相邻的两个元素进行比较
二分查找针对有序数组,将要查找的值与mid比较,小则表明值在左边,反之亦然
	//0-arr.length-1
	//i+1-arr.length
	public static void select1(int[] arr){
		for(int i = 0;i < arr.length-1;i++){
			for(int j = i + 1;j < arr.length;j++){
				if(arr[i]>=arr[j]){
				//	int temp = arr[i];
				//  arr[i] = arr[j];
				//	arr[j] = temp;
				swap(arr,i,j);
				}
			}
		}
	}
	//0-arr.length-1
	//0-arr.length-1
	//冒泡排序——相邻之间进行比较
	public static void select2(int [] arr){
	for(int i = 0 ;i < arr.length-1;i++){
		for(int j = 0;j<arr.length-1;j++){//角标越界的问题
			if(arr[j]>arr[j+1]){
			//	int temp = arr[j];
			//	arr[j] = arr[j+1];
			//	arr[j+1] = temp;
				swap(arr,j,j+1);
			}
		}
	}
	}
//发现排序方法,位置置换代码重复,进行抽取.
	public static void swap(int [] arr ,int a,int b){
		int temp = arr[a];
		arr[a] = arr [b];
		arr[b] = temp;
		//代码抽取
	}
	//
 public static int  binarySearchKey(int [] arr,int key){
		int max,min,mid;
		min = 0;
		max = arr.length-1;
		mid = (min+max)>>1;
		while(arr[mid]!=key){
			if(key>arr[mid])
				min = mid + 1;
			else if(key<arr[mid])
				max = mid - 1;
			if(max < min)
				return -1;
			mid = (min+max)>>>1;
		}
		return mid;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值