逻辑运算符&&与&的区别
&&具有短路效果。左边是false,右边不执行。
&是无论左边false还是true,右边都会执行。
异或(^)运算符
运算规则:0^0 = 0, 1^0 = 1,  0^1 = 1,  1^1 = 0,运算对象相同为0,不同为1
eg:3^5运算过程
(1)先将3和5转换成二进制的11和101
(2)再按对应的位分别进行运算,11位数不足补零
       011
   ^   101
  -----------
       110
 (3)运算结果转换成10进制:6
异或运算符的特点
(1) 0^0=0,   0^1=1   0与任何数异或=任何数
(2) 1^0=1,   1^1=0   1与任何数异或 =任何数取反
(3) 任何数异或自己=把自己置0
(4)一个数据对另一个数据位异或两次,该数本身不变。
异或运算符常见用途

1.快速判断两个值是否相等

判断两个整数a,b是否相等,则可通过下列语句实现:
return ((a ^ b) == 0)

2.实现两个值的交换,而不必使用临时变量。

例如交换两个整数a=10100001,b=00000110的值,可通过下列语句实现:
a = a^b;   //a=10100111
b = b^a;   //b=10100001
a = a^b;   //a=00000110
位运算符
<<:左移    -------->左边最高位丢弃,右边补齐0,num<<2相当于num*num^2
>>:右移    -------->最高位是0,左边补齐0,最高位是1,左边补齐1,num>>2相当于num/num^2
>>>:无符号右移    --->无论最高位是0还是1,左边补齐0
for循环的执行步骤
for(①; ②; ③){

     ④//代码段

    }

一、执行①

二、执行②,如果判断结果为true,则执行三,如果判断结果为false,则执行五

三、执行 ④

四、执行③,然后重复执行二

五、退出循环
for,while,do…while三种循环语句的区别
do..while循环至少执行一次循环体
for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
两种最简单的死循环格式
* while(true){...}
* for(;;){...}
return,break,continue区别
return是结束方法

break是跳出循环

continue是终止本次循环继续下次循环
函数的重载与重写
-----重载

在同一个类中,允许在一个以上的同名函数,必须有不同的参数列表(参数类型或参数个数)。

可以有不同的访问修饰符,可以抛出不同的异常。

注意:不能以返回类型来区分重载方法。
eg:
class demo{
	public void add(int a){}
    public void add(int a,int b){}//----参数个数不同
    public void add(String a,int b){}//-----参数类型不同
}

重载判断

java字符串如何进行异或_数组

-----重写

参数列表必须与被重写的方法相同,返回类型必须与被重写方法相同

访问修饰符的限定必须大于被重写的方法的修饰符(public > protected > default > private)

重写方法一定不能抛出新的检查异常或者重写的方法声明更加宽泛的检查异常。
eg:
public class Father{
	public void speak(){
		System.out.println("Father");
	}
}

public class Son extend Father{
	public void speak(){//------被重写的方法
		System.out.println("Son");
	}
}
数组使用的核心思想
数组具有连续的内存空间,存储相同的数据,正是该特性使得数组具有一个特性:随机访问。
这个特性虽然使得访问数组变得非常容易但也是使得数组插入和删除变得很低效,插入和删除
数据后数组为了保证连续性,要做很多搬迁工作。
---容器特点:
    1.固定长度    2.元素都有索引

---什么时候使用容器呢?
    数据多,个数确定,而且有对应关系。
    
---在分析需求时
    1.需求中的数据是否有对应的有序编号
    2.需求中的数据是否需要有序的编号    >>>>>>>>>>>>>>>如果有使用数组存储。
二维数组了解

java字符串如何进行异或_数组_02

equal与==区别
最大的区别是:

    ==是运算符   equal是方法。

Java基本类型

    --比较包装类型
    --比较String类型
    --比较对象
    
1.Java基本类型(short , int , long , byte , char , float , double , boolean)。

    比较基本类型,只能用 == ,不能用equal。这里的 == 比较的是两个变量的值。
    
2.比较包装类型

    == 比较的是内存地址,因为 a 和 b 是 new出来的,是两个不同的对象,所以地址肯定不同。
    equal 比较的是值。
    
3.比较String类型

    == 比较的是内存地址。
    equal 比较的是值。
    
4.比较对象

    == 和 equal 比较的都是内存地址,因为 equal 没有被重写,没有被重写的 equal 都是Object对象的equal方法
注意事项

1. if语句

1.1:比较表达式无论简单还是复杂,结果必须是boolean类型
     1.2:if语句控制的语句体如果是一条语句,大括号可以省略;
          如果是多条语句,就不能省略。建议永远不要省略。
     1.3:一般来说:有左大括号就没有分号,有分号就没有左大括号

2.什么时候if不能用三元运算符改进呢?

当if语句控制的操作是一个输出语句的时候不能,因为三元运算符操作完毕就应该有一个结果而不是一个输出。

3.switch语句中的break能省略吗?

* 最后一个可以省略,其他最好不要省略
会出现一个现象:case穿透
基础易错题
第一题
int x = 1,y=1;

if(x++==2 & ++y==2)
{
	x =7;
}
System.out.println("x="+x+",y="+y);x=2,y=2
第二题
int x = 1,y = 1;

if(x++==2 && ++y==2)
{
	x =7;
}
System.out.println("x="+x+",y="+y);x=2,y=1;
第三题
int x = 1,y = 1;
if(x++==1 | ++y==1)		//| :前面的表达式为真时,程序会继续执行后面的表达式
{
	x =7;
}
System.out.println("x="+x+",y="+y);x=7,y=2
第四题
int x = 1,y = 1;
if(x++==1 || ++y==1)		//||:前面的表达式结果为真,则程序不会再执行后面的表达式
{
	x =7;
}
System.out.println("x="+x+",y="+y);x=7,y=1;
第五题
boolean b = true;

if(b==false)  //如果写成if(b=false)有结果吗?如果有,结果是?
	System.out.println("a");
else if(b)
	System.out.println("b");
else if(!b)
	System.out.println("c");
else
	System.out.println("d");
第六题
int x = 2,y=3;

switch(x)
{
	default:
		y++;
	case 3:
		y++;
	case 4:
		y++;
}

System.out.println("y="+y);//6
第七题
int a = 0;
        for (int i = 0; i < 99; i++) {
            a = a ++;
        }
        System.out.println(a);//a=0