---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
语句,进制,选择排序
If和switch语句很像。在具体场景下:
1,如果判断的具体的数值不多,而且符合byte,short,int,char这4种类型
虽然两个语句都可以使用,建议使用swtich语句,因为效率稍高
其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用的范围更广。
在计算机中的数据通过进制表示:
二进制:用0-1表示,满2进1
八进制:用0-7表示,满8进1
十进制:用0-9表示,满10进1
十六进制:用0-9,和A-F表示,满16进1
十进制转其他进制(2,8,16)
其实就是%2或%8或%16的过程。 相反就是*2的过程,但效率不高
60转换&1(1)>>>1位 &7(111)>>>3位 &15(1111)>>>4位
取负数就是:正数取反码(~)+1
Java的位运算,直接对整数类型的位进行操作,这些整数类型包括long、int、short、char 和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>、期待与您交流! ----------------------