【黑马程序员】java基础部分---------------进制转换、逻辑运算符

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------


语句,进制,选择排序

Ifswitch语句很像。在具体场景下:

1,如果判断的具体的数值不多,而且符合byte,short,int,char4种类型

   虽然两个语句都可以使用,建议使用swtich语句,因为效率稍高

其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用的范围更广。

 

在计算机中的数据通过进制表示:

二进制:用0-1表示,满2进1

八进制:用0-7表示,满8进1

十进制:用0-9表示,满10进1

十六进制:用0-9,和A-F表示,满16进1 


十进制转其他进制(28,16

  其实就是%2%8%16的过程。   相反就是*2的过程,但效率不高

60转换&1(1)>>>1位    &7(111)>>>3位     &15(1111)>>>4

取负数就是:正数取反码(~)+1

 

Java的位运算,直接对整数类型的位进行操作,这些整数类型包括longintshortchar byte,位运算符具体如下表:

运算符

说明

<< 

左移位,在低位处补0

>> 

右移位,若为正数则高位补0,若为负数则高位补1

>>> 

无符号右移位,无论正负都在高位补0

&

与(AND),对两个整型操作数中对应位执行布尔代数,两个位都为1时输出1,否则0

|

或(OR),对两个整型操作数中对应位执行布尔代数,两个位都为0时输出0,否则1

~

非(NOT),一元运算符。

^

异或(XOR),对两个整型操作数中对应位执行布尔代数,两个位相等0,不等1

<<=

左移位赋值。

>>=

右移位赋值。

>>>=

无符号右移位赋值。

&=

按位与赋值。

|=

按位或赋值。

^=

按位异或赋值。


运算符:&和|




数组部分

 

一、概述

1. 数组是一种数据结构,用来存储同种类型的数据的集合

2. 数组一旦定义了,长度是不可变的

3. 可以通过数组角标获取数组中的元素

4. 数组有维度:一维数组、多维数组


二、数组定义方式

1. 数据类型[ ]数组名=new   数据类型[  元素长度  ]

如:int[]   arr=new int[10];


2. 数据类型数组名[ ]=new   数据类型[元素长度 ]

如:int   arr[ ]=new  int[10];


3. 数据类型[ ]数组名={元素1,元素2,元素3,元素4};


4. 数据类型数组名[ ]={元素1,元素2,元素3}



数组的操作:遍历,选择排序,冒泡排序,元素换位置,

/*数组的常见操作*/
class ArrayTest{
	public static void main(String[] args){
		int[] arr={2,5,9,90,0,7,4,5};
		For(arr);
		getMax(arr);
		xunZe(arr);
		
		maopao(arr);
	}
	//遍历数组
	public static void For(int[] arr){
		for(int x=0;x<arr.length;x++){
			System.out.print(arr[x]+" ");
		}
		System.out.println();
	}
	//求最大值
	public static void getMax(int[] arr){
		int max=0;
		for(int x=0;x<arr.length;x++){
			if(arr[max]>arr[x])//最大值
				max=x;
			
		}
		System.out.println("最值:"+arr[max]);
	}
	//选择排序
	public static void xunZe(int[] arr){
		for(int x=0;x<arr.length-1;x++){
			for(int y=x+1;y<arr.length;y++){
				 
				if(arr[x]>arr[y]){//升序
					int temp=arr[x];
					arr[x]=arr[y];
					arr[y]=temp;
				}
			}
		}
		For(arr);
	}
	//冒泡排序
	public static void maopao(int[] arr){
		for(int x=0;x<arr.length-1;x++){//外循环-1为了
			for(int y=0;y<arr.length-x-1;y++){//只是在内循环中,y元素进行前后比较,
				if(arr[y]>arr[y+1]){		//-X为了每次内循环结束-掉最后一元素
											//-1防止角标越界
					int temp=arr[y];
					arr[y]=arr[y+1];
					arr[y+1]=temp;
				}
			}
		}
		For(arr);
	}
}


Java中的方法:(Arrays.sort(int[] arr)

折半查找:数组必须是有序的

 

查表法:对十进制转其他进制

toHexString();  toBinaryString();   toOctalString();

class Jinzhi1{
	public static void main(String[] args){
		
		inTo(num);
	}
	//十进制转二进制
	pulic static void toBin(int num)
	{
		inTo(num,1,1);
	}
	//十进制转8进制
	pulic static void toBa(int num)
	{
		inTo(num,7,3);
	}
	//十进制转16进制
	pulic static void toHex(int num)
	{
		inTo(num,15,4);
	}
	public static void inTo(int num,int base,int offset){
		if(num==0)
			System.out.println(0);
			return ;
		char[] chs={'0','1','2','3','4','5',
					'6','7','8','9',
					'A','B','C','D','E','F'};
		char[] arr=new char[32];
		int pos=arr.length;
		while(nnm!=0)
		{
			int temp=num&base;
			arr[--pos]=chs[temp];
			num=num>>>offset;
		}
		for(int x=pos;x<arr.length;x++)
		{
			System.out.println(arr[x]);
		}
	}
}


 

二维数组:

1.数据类型[ ][ ]  数组名=new数据类型[ 二数组长度][其中一位数组的长度]

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

Arr.length  二维数组的长度   arr[0].length   二维数组中的0角标位置的一维数组的长度

Day4

Int [] x,y[] ::     x为一维数组,y为二维数组


2. 数据类型[ ][ ]  数组名={{1,2,3},{4,5,6}}


代码练习:

* * 2、 定义一个二维int数组,编写代码获取最小元素。
	 * @param args
	 * 思路:
	 * 1.定义一个TreeSet集合,将二维数组中的元素封装成Integer对象,存储进TreeSet集合中
	 * 2.因为TreeSet集合具备自然排序,而且Integer对象本身实现了Comparable接口
	 * 3.所以,集合中的第一个元素就是最小元素
	 * 4所以集合中的第一个元素,也就是二维数组中的最小元素。(进行转换成int类型即可)
	 
*/
import java.util.*;
 class Test2 {
	public static void main(String[] args) {
	
	int[][] arr={{2,5,0,7,-9},{20,25,30,35,50},{10,20,30,60}};
			
		TreeSet ts=new TreeSet();
		//遍历二维数组
		for(int x=0;x<arr.length;x++){
			for(int y=0;y<arr[x].length;y++){
				
				//通过将所有元素添加到TreeSet集合中
				ts.add(Integer.valueOf(arr[x][y]));
			}		
		}
		System.out.println(ts);
		//获取迭代器
		Iterator it=ts.iterator();
		//获取集合中的第一个元素就是二维数组中的最小值
		//集合中最后一个元素就是二维数组中的最大值
		while(it.hasNext()){
			Integer in=it.next();
			System.out.println(in.intValue());
			break;
		}
	}
	
}









---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值