编程基础

算术运算符

+ - * / 

% 取模 (余数)

++a    先自增  

a++    后自增  

int a=2;
int b=++a;     //b=3  a=3

 

int a=2;

int b=a++;   //b=2 a=3

 

ASCII码


转义字符



类型转换

 1 short s1 = 1; 
2 s1 = s1 + 1;//错误
3 //整数默认为int类型,所以1为int类型。s1为short类型。
4 //shot(短整型) 16 -32768 - 32768
5 //int(整型) 32 -2147483648-2147483648
6 //容量小的会被提升到容量大的 s1+1 被转化成int类型了。
7
8 s1 = (short)(s1 + 1);//正确 再强制转回成short
9
10 s1 += 1; //正确,这是赋值运算
11
12
13 // s1 = s1 + 1和 s1 += 1有什么区别?
14 //前者是加了以后,再赋值。
15 //后者是赋值和加法同时运行,所以1类似于short s1 = 1 赋值运算中的1,这个1是无需强制转换的。


逻辑运算符

|   或

&  与

^  异或

||  或 (短路)提高效率

&& 与 (短路)提高效率

 

switch    加减乘除的选择

		int a=10;
		int b=20;
		char c='*';
		switch(c)
		{
			case '+':
				System.out.println(a+b);
				break;
			case '-':
				System.out.println(a-b);
				break;
			case '*':
				System.out.println(a*b);
				break;
			case '/':
				System.out.println(a/b);
				break;
			default:
				System.out.println("错误");
		}

 

do while

		int a=1;
		do       //do while  至少执行一次。
		{
			System.out.println("Hello World!");
			a++;
		}
		while (a<10);




		int a=1;
		while(a<10)  //需要判断
		{
			System.out.println("Hello World!");
			a++;
		}

  

九九乘法表

		for(int a=1;a<10;a++)    //竖列
		{
			for(int b=1;b<=a;b++)  //横行
			{
				int num=a*b;
				System.out.print(a+"*"+b+"="+num+"  ");
			}
			System.out.println(" ");
		}

 

等边三角形

		for(int a=1;a<6;a++)  // 竖列
		{
			for(int b=a;b<6;b++)  // 横列的空格
			{
				System.out.print(" ");
			}
			for (int c=1;c<=a ;c++ ) //横列的*
			{
				 System.out.print("* ");
			}
			System.out.println();
		}

 

break; 结束循环
continue; 结束本次循环,继续下次循环。
加在后面的语句无意义,编译出错


重载

		void method()   
		{
			System.out.println("无参数");
		}
		void method(int x)
		{
			System.out.println(x+"有参数");
		}

  

数组

内存结构: 栈区  堆区  方法区  本地方法区  寄存器

//数组 每个元素都有编号,从0开始。引用型
int[] arr = new int[4];    //    int默认值0     double为0.0    float为0.0f    boolean 为 flase
int arr[] =new int[4];  // arr[]也行    int[]上面更规范。

int[] arr = new int[]{1,2,3,5};

int[] arr={3,5,1,6};

arr =null; //不再指向 数组在堆内存中被垃圾回收   栈是自动释放   堆垃圾回收
//遍历
		int[] arr = new int[]{7,3,8};
		for (int a=0;a<arr.length ;a++)  //arr.length-1 最后一位
		{
			System.out.print(arr[a]);
		}

 

		//获取数组中的最大值
		int[] arr = new int[]{9,6,3,5,10};
		int max = arr[0];
		for (int a=1;a<arr.length;a++ )
		{
			if(arr[a]>max)   //如果大于num
			{
				max = arr[a]; //就赋值给num
			}
		}
		System.out.println(num);

 

选择排序

		int[] arr = new int[]{9,6,3,5,10};
		for (int a=0;a<arr.length-1;a++)
		{
			for (int b=a+1;b<arr.length;b++)
			{
				if(arr[a]>arr[b])
				{
					int temp = arr[a];
					arr[a]=arr[b];
					arr[b]=temp;
				}
			}
		}

 

冒泡排序

        int[] arr = new int[]{9,6,3,5,10};
		for (int a=0;a<arr.length-1;a++ )
		{
			for (int b=0;b<arr.length-a-1;b++ )
			{
				if(arr[b]>arr[b+1])
				{
					int temp=arr[b];
					arr[b]=arr[b+1];
					arr[b+1]=temp;
				}
			}
		}

import java.util.*;

Arrays.sort(arr);

 

折半查找,可以提高效率,但是必须是有序的。

		
		int[] arr = new int[]{1,4,7,10,12,15,20};
		int max = arr.length-1;
		int min = 0;
		int mid = (max+min)/2;
		int key = 4;
		while(arr[mid]!=key)
		{
			if(key>arr[mid])
			{
				min = mid+1 ;
			}
			else
			{
				max =mid-1;
			}
			mid = (max+min)/2;
		}
		System.out.println(arr[mid]);

十进制转二进制

		int num = 10; 
		StringBuffer sb = new StringBuffer();
		while (num>0)
		{
			sb.append(num%2);   //顺序填入
			num = num /2;
		}
		System.out.println(sb.reverse());  //反转输出

十进制转十六进制

		int num = 10; 
		StringBuffer sb = new StringBuffer();
		for (int x=0;x<8 ;x++ )
		{
			int temp = num & 15;
			if(temp>9)
			{
				sb.append((char)(temp-10+'A'));
			}
			else
			{
				sb.append(temp);
			}
			num = num >>>4;  //无论最高位是多少,一律补0
		}
		System.out.println(sb.reverse());

查表法  十进制转十六进制

		char[] arr = new char[]{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; //建立表
		int num=20;
		while(num!=0)
		{
			int temp = num & 15;
			System.out.println(arr[temp]);
			num = num>>>4;
		}

 

		//二维数组
		int[][] arr={{4,2,3},{3,5,2},{3,7,2}};
		System.out.println(arr[0][2]);//3

  

 



posted @ 2012-03-18 19:40  微明  阅读(192)  评论(0)    收藏  举报