2020-09-22

Java中的数组

1.JAVA中的数组
java确保数组会被初始化,而且不能在他的范围之外被访问。每个引用都会自动被初始化为null。在使用任何引用前,必须为其指定一个对象。可以创建用来存放基本数据类型的数组,编译器也能确保这种数组的初始化,因为它会将这种数组所占的内存全部置零。
数组两大特性:1.内存连续 2.类型相同

//定义数组
int [] a;
int b[];
//初始化
a=new int [10];
a[0]=3;
System.out.printlh(a)//输出a的首地址
for(int i=0;i<10;i++){
System. out.println(a[i]);}//输出除a[0]为3,其他全为0,因为未赋值自动初始化为0
int []c={2,3,4,5,6};
//for-each循环
for(int i:c){
System. out.println(i+" ");//输出数组c中所有的值
}

2.永远不需要销毁对象:
对象生命周期从new开始到垃圾站自动回收结束。
变量生命周期由花括号决定作用,作用域决定了其内定义的变量名的可见性和生命周期。
int x=12; {int a=3; int x=5;//报错。此处代码在c和C++中是合法的,但在java中却不能这样书写。 }
当用new创建一个java对象时,它可以存活于作用域之外。

string s=new String("a string");

引用s在作用域终点就消失了,然而,s指向的是对象仍然继续占据内存空间。在这一小段代码中,我们无法在这个作用域之后访问这个对象,因为对它唯一的引用已经超出了作用域的范围
java有一个垃圾回收器,用来监视用new创建的所有对象,并辨别那些不会再被引用的对象。随后,释放这些对象的内存空间,以便供其他新的对象使用。
3.static关键字
当声明一个事物是static时,就意味着这个域或方法不会与包含它的那个类的任何对象实例关联在一起。

Dog a=new Dog();
Dog.run(8,5);//直接用对象调用函数
……
static int run(x,y)
{……}

static 方法的一个重要用法就是在不创建任何对象的前提下就可以调用它。

class StaticTest{
static int i=47;
}
StaticTest st1=new StaticTest();
StaticTest st2=new StaticTest();
//st1.i与st2.i指向同一存储空间





4.对象赋值:

public  class demo3{
public static void f(A y){
y.num=20;
}
public static void main(String[] args)
{
A x=new A();
x.num=10;
System.out.println(x.num)//输出10;
f(x);
System.out.println(x.num)//输出20;
}
}
class A{
int num;
}
public demo3{
public static void main(String[] args)
{A t1=new A();
A t2=new A();
t1.num=10;
t2.num=20;
System.out.println(t1.num+t2.num)//输出30;
t1=t2;//对象赋值,两对象指向同一存储空间System.out.println(t1.num+t2.num)//输出40;
t1.num=30;//由于赋值操作的是一个对象的引用,所以修改t1的同时也改变了t2,这是由于t1和t2包含的是相同的引用,他们指向相同的对象。
System.out.println(t1.num+t2.num)//输出60
t1. num=t2. num这样便可以保持两个对象彼此独立,而不是将t1和t2绑定到相同的对象。
}
}
class A{
int num;
}

5.注释文档:
1.javadoc输出的是一个HTML文件,可以用Web浏览器查看。
2.所有javadoc命令都只能在“/**”注释里出现,注释结束于“*/”。
3.独立文档标签是一些以“@”字符开头的命令,并且置于注释行的最前头。
4.javadoc只能为public(公共)和protected(受保护)成员进行文档注释。private(私有)和包内可访问成员的注释会被忽略掉。
6.编译风格:
1.类名首字母要大写
2.如果类名由几个单词构成,那么把它们并在一起(也就是说,不要用下划线来分隔名字)其中每个内部字母都采用大写形式。
3.“驼峰风格”:只是标识符的第一个字母采用小写,其他所有内容与类风格一致。
7.操作符:
1.“=”、“==”、和“!=”,这些操作符能操作所有对象。String类支持“+”和“+=”
2.int x =1;y=2;z=3; int a=x+y+z; int b=x+(y-2)/(2+z); System.out.println("a="+a+“b=”+b);
System.out.println()语句包含“+”操作符。在这种上下文环境中,“+”意味着“字符串连接”,并且如果有必要,它还要执行“字符串转换”。当编译器观察到一个String后面紧跟一个“+”,而这个“+”的后面又紧跟一个非String类型的元素时,就会尝试着将这个非String类型转的元素转换为String.
8.关系操作符(测试对象等价性):

Integer a1=new Integer(47);
Integer a2=new Integer(47);
System. out.println(n1=n2);//输出为false
System. out. println(n1!=n2);
/*输出为true。尽管两个Integer对象都是相同的,然而对象的引用却是不同的。*/

1.基本类型用==或!=即可。
2.对象比较必须使用特殊方法equals().
3.由于equals()的默认行为是比较引用。所以除非在自己的新类中覆盖equals()方法,否则不可能表现出我们希望的行为。

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页