编程基础
算术运算符
+ - * /
% 取模 (余数)
++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

浙公网安备 33010602011771号