JavaSE 基础复习01
JavaSE 基础学习01
1.第一节
cmd set classpath = .;c:; set path = .;c:\
ASCII GB2313 GBK Unicode
byte b = 4
byte b1 = 4;
byte b2 = 10;
b = b1 + b2;
System.out.println(b);
报错,损失精度 b1 b2是变量 ‘+’ 可能会超过byte最大数值,可以改成如下
final byte b1 = 4;
final byte b2 = 10;
class ByteDemo
{
public static void main(String[] args)
{
byte b = 4;
final byte b1 = 3;
final byte b2 = 12 ;
b = b1 + b2;
int byteValue = Byte.MAX_VALUE ;
int shortValue = Short.MAX_VALUE ;
int intValue = Integer.MAX_VALUE ;
long longValue = Long.MAX_VALUE ;
System.out.println("byte:"+byteValue+"||||"+"short:"+shortValue+"||||"+"int:"+intValue+"||||"+"long:"+longValue+"|||");
/*byte b3 = 'a';
byte b4 = 'b';
System.out.println((char)(b3+b4));*/
System.out.println(b);
}
}
//1.算术运算符 + - * / %(取余,模运算)
//2.逻辑运算符
class OperateDemo
public static void main(String[] args)
{
System.out.println(3>2); //true
System.out.println(3==2); //false
// instanceof 检查是否是类的对象 "hello" instanceof String true
}
//& 与 && ; | 与 || 双与或双或 如果第一项可以判断出结果 不用运算第二项
//3.位运算符
class OperateDemo
public static void main(String[] args)
{
System.out.println(6&3); // 0110 & 0011 = 0010 = 2
System.out.println(6|3); // 0110 | 0011 = 0111 = 7
System.out.println(6^3); //异或 一个数异或一个数两次 ,值不变
System.out.println(~6); //反码
/* 3<<2 = 3 * 2 * 2 = 12
>>>:无符号右移 数据进行右移时 高位补0 */
int a = 3,b = 4; //将两个值交换
/*
a = a + b; 如果两个整数的数值过大 ,会超出int 范围,会强制转换 ,影响精度
b = a - b;
a = a - b ;*/
a = a ^ b;
b = a ^ b;
a = a ^ b;
//三目运算符,例子:获取两个整数中的较大的整数
public int getMax(int a ;int b)
{
return a>b?a:b;
}
//javac -encoding UTF-8 ByteDemo1.java
}
2.第二节
/*for循环 中 break 与 continue;
注意点 可以给循环加一个名字 break 可以直接跳出 */
class IfDemo{
private void static main(String[] args)
{
ear:for(int i= 0;i<10;i++)
{
easy:for(int j=0;j<10;j++)
{
if(i==1){
System.out.println("i:"+i+";"+"j"+j);
}
else{
System.out.println("i:"+i+":"+"j"+j);
}
}
}
}
}
内存的划分:寄存器 本地方法区 方法区 栈内存 堆内存
栈内存:存储的都是些局部变量(没有的都占(栈)内存),而且变量作用域一旦结束 该变量就自动释放
堆内存:存储在数组和对象(其实数组就是对象) 凡是new建立在堆中,特点:
1:每一个实体都有首地址值。
2:堆内存中的每一个变量都有默认初始值,根据类型的不同而不同。
3:垃圾回收机制
3.第三节
数组的处理与:
a).数组的最值
class ArrayDemo{
public static void main(String[] args)
{
int [] arr = new int[]{80,70,69,92,20,39,90,91,20,77};
int max = 0;
int size = arr.length;
for(int i=0;i<size;i++)
{
max = getMax(max,arr[i]);
}
System.out.println("the largest item in this array is:"+max);
}
public static int getMax(int a,int b)
{
return a>b?a:b;
}
}
这样存的问题是 max如果大于数组中所有元素,查找失败,改进:max = arr[0];也可以比较脚标
b).选择排序
从左到右 第一个元素 分别于其他元素比 选出最小数
从左到右 第二个元素 分别于其他元素比 选出倒数第二小数
/*可以给for循环加上name标签 break、continue可以使用*/
class IfDemo
{
private void static main(String[] args)
{
ear:for(int i= 0;i<10;i++)
{
easy:for(int j=0;j<10;j++)
{
if(i==1){
System.out.println("i:"+i+";"+"j"+j);
break ear;
}
else{
System.out.println("i:"+i+":"+"j"+j);
}
}
}
}
}
c).冒泡排序
public static int[] popSort(int[] arr)
{
for(int x = 0 ;x<arr.length -1;x++)
{
for(int y = 0 ;y<arr.length-1-x;y++)
{
if(arr[y]>arr[y+1])
{
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
return arr;
}
数组的二分查找法:
public static int halfSearch(int[] arr,int key)
{
int max,min,mid;
min = 0 ;
max = arr.length -1;
mid = (min+max)/2;
while(arr[mid]!=key)
{
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid -1;
if(max<min)
return -1
}
return mid;
}
//Arrays.binarySearch(arr,key) 如果存在 返回具体角标位 如果不存在 返回 -插入点-1
![](https://img2020.cnblogs.com/blog/2196375/202011/2196375-20201109185153696-372312711.png)
easyaaa,where you are ?