java编程思想

 一、一切都是对象

 

1.引用操控对象

java中一切都是对象,对像的操控是通过引用实现的。就如同电视是一个对象,遥控器是引用,通过遥控器来操控电视。

String str ;

str就是String的引用。

String s = new String("a");

通过new String()来创建String对象,通过引用s来实现对对象String的操控。

 

2.对象存储

寄存器:位于处理器的内部,是最快的存储区。

堆栈:位于RAM中。堆栈指针下移,分配新内存,堆栈指针上移,释放内存。一般对象的引用存在此处。

:也位于RAM中。存放所有的java对象。当执行new方法时才会在堆中分配内存。

常量存储:存入ROM只读内存中。

非RAM区:一般用于流对象和持久化对象。

 

3.基本类型

基本类型
基本类型大小最小值最大值包装类
boolean---Boolean
char16bitUnicode0Unicode2^16 -1Char
byte8bits-128127Byte
short16bits-2^152^15Short
int32bits-2^312^31Integer
long64bits-2^632^63Long
float32bitsIEEE754IEEE754Float
double64bitsIEEE754IEEE754Double
void---Void

 

4.类的相关信息

1)作用域

java中作用域由花括号位置决定

{ 
    int a =1;
    {
      int b =2;
      //a,b 都可用
    }
    //仅a可用
}

2)方法签名

方法签名(唯一的标示出某一个方法):方法名+参数列表

 

3)基础成员默认值

class A{
    int a ;
    void add(){
    int b;
    //a 可以直接使用,类的基础成员变量有默认值
    //b不能直接使用,局部变量需要初始化
    }
}

4)staic关键字

类字段:占用一份存储空间,多个对象共同共享。

class A{
static int i =10;
static void add(){}
}
A a1 = new A();
A a2 = new A();

a1,a2共享一个i

类方法:可以通过类.方法名来对方法调用,而不用创建对象。

A.add();

 

二、操作符

+,-,*,/,%  , > ,>= ,<,<= 

&& 短路  A&&B&&C 当B为 false时,C不再计算

||  短路。E|F|G. 当F为true时,G不再计算

不短路:& 按位与 , | 按位或 ,^异或,~按位非。      &= ,|= , ^=

“=”    赋值

“==” 等于

“!=” 不等于

“==”   “!=”   用于比较对象的引用

注意:基本类型存储了实际的数值,而非指向一个对象的引用,所以在为其赋值时,是直接将一个地方的内容复制到另一个地方。

public class TypeName {
    int level;
}

 public  static void main(String[] args){
        TypeName t1 = new TypeName();
        t1.level=10;
        TypeName t2 = new TypeName();
        t2.level=20;
        System.out.println("t1:"+t1.level);
        System.out.println("t2:"+t2.level);
        t1=t2;
        System.out.println("t1:"+t1.level);
        System.out.println("t2:"+t2.level);
        t1.level=30;
        System.out.println("t1:"+t1.level);
        System.out.println("t2:"+t2.level);

    }

t1:10
t2:20
t1:20
t2:20
t1:30
t2:30

赋值是操作一个对象的引用,所以当:t1=t2时,t1,t2引用同时指向t2的引用,当这个引用对象的值改变时,t1,t2对应的值也会改变。

++x,--x   操作符位于变量前面或表达式的前面

x++,--x  操作符位于变量后面或表达式后面

{
    int i = 10;
    System.out.println("++i:"+(++i));
    System.out.println("i++:"+(i++));
}

++i:11
i++:11

比较:equals() 与 “==”区别

equals():不适用于基本类型,用于比较对象的内容是否相等

==  :比较两个对象引用是否相同

public class TypeName {
    int level;
}

TypeName t1 = new TypeName();
t1.level=10;
TypeName t2 = new TypeName();
t2.level=10;
boolean b = t1.equals(t2);
System.out.println("t1.equals(t2):"+b);
System.out.println("t1.level.equals(t2.level):"+(t1.level==t2.level));

t1.equals(t2):false
t1.level==t2.level:true


 Integer i1 = 10;
 Integer i2 = 10;
 System.out.println("i1.equlas(i2):"+(i1.equals(i2)));
 i1.equlas(i2):true

equals默认是比较引用,如果要实现内容的比较需要覆盖equals(),Integer 实现了equals() 方法的覆盖,TypeName 没实现对equals()方法的覆盖,所以Integer比较的是内容,TypeName比较的是引用。

 

三、控制执行流程

1.基本语法

1) if () {} else if(){}else{}

2) while(){}

do{}while(){}

3) for(int i=0;i<10;i++){}

for(String s:str){}

4) switch(c){

case 'a':    xxx  break;

case 'b':    xxx  break;

default:

}

2.关键字

return:返回值,并退出。如果是void,直接退出。

break:跳出当前的循环,不执行循环中剩余的语言。

continue:退出当前循环,然后退回循环起始处,执行下一次循环。

for(int i=0;i<5;i++){
 for(int j=i+1;j<5;j++){
  if(i*j%3==0){break;}
    System.out.println(i);
    System.out.println(j);
    System.out.println("i*j:"+(i*j));
   }
  }
}

1
2
i*j:2

for(int i=0;i<5;i++){
  for(int j=i+1;j<5;j++){
     if(i*j%3==0){continue;}
      System.out.println(i);
      System.out.println(j);
      System.out.println("i*j:"+(i*j));
      }
 }
}
1
2
i*j:2
1
4
i*j:4
2
4
i*j:8

可见break只是退出当前循环,同时不再执行该循环的后续操作。continue,只是退出该一次循环,而不是整个循环。

int i = 0;
        outer:
        for (;true;){
            inner:
            for(;i<10;i++){
                System.out.println("i=="+i);
                if(i==2){
                    System.out.println("continue");
                    continue ;
                }
                if (i==3){
                    System.out.println("break");
                    i++;
                    break ;
                }
                if(i==7){
                    System.out.println("continue outer");
                    i++;
                    continue outer;
                }
                if(i==8){
                    System.out.println("break outer");
                    break outer;
                }
                for(int k=0;k<5;k++){
                    if(k==3) {
                        System.out.println("continue inner");
                        continue inner;
                    }
                }
            }
        }

    }
i==0
continue inner
i==1
continue inner
i==2
continue
i==3
break
i==4
continue inner
i==5
continue inner
i==6
continue inner
i==7
continue outer
i==8
break outer

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值