访问控制
java的访问指示符有public(公共的,全局的),private(私有的,局部的),protected(受保护的);要理解public和private对访问的作用,注意下面的例子:
package study;
class Rest{
int a;
public int b;
private int c;
void lzq(int i){
c=i;
}
int lzq1(){
return c;
}
}
public class Test1 {
public static void main(String[] args) {
Rest pwd=new Rest();
pwd.a=10;
pwd.b=20;
//pwd.c=100;
pwd.lzq(100);
System.out.println(pwd.a+","+pwd.b+","+pwd.lzq1());
}
}
在本例中,成员c被指定为private,因此它不能被它的类之外的代码访问,所以,在Test1类中不能直接访问c,对它的访问只能通过它的public方法lzq()和lzq1();
理解static
声明为static的变量实质上就是全局变量,当声明一个对象时,并不产生static变量的拷贝,而是该类中所有的实例变量共用的一个static变量,声明为static的方法有以下几条限制:
1.它们仅能调用其他的static方法,
2.它们只能访问static数据,
3.它们不能以任何形式引用this或super
如果你需要计算来初始化你的static变量,你可以声明一个static块,static块仅在该类被加载时执行一次,
package study;
class Lzq{//随便定义的一个类
public Lzq(){
System.out.println("构造方法");
}
{//构造块
System.out.println("构造块");
}
static{//被static修饰的静态块
System.out.println("静态块 ");
}
}
public class TestDemo {
public static void main(String[] args) {
new Lzq();
new Lzq();
new Lzq();
new Lzq();
}
}
了解final
一个变量可以声明为final,这样做的目的是为防止它被修改,这意味着声明final变量的时候你必须初始化它,为final变量所有的字符选择大写是一个普遍的约定,声明为final的变量在实例中不占内存,final变量实际上是一个常数
探索String类
String类包含许多操作字符串的方法,比如你可以用equals()来检验两个字符串是否相等,你可以调用一个方法length()来获取字符串的长度,也可以调用charAt()来获得一个字符串指定索引的字符;当然,String还可以组成数组,
package study;
public class TestDemo7 {
public static void main(String[] args) {
String lzq1="hello world";
String lzq2="hello world";
String lzq3=lzq1;
System.out.println("字符串1长度是: "+lzq1.length());
System.out.println("字符串1的第四个元素是: "+lzq1.charAt(4));//从0开始计数
if(lzq3.equals(lzq2)){
System.out.println("lzq3==lzq2");
}
else{
System.out.println("lzq3!=lzq2 ");
}
}
}
使用命令行参数
所有的命令行参数都是以字符串的形式传递的,你必须手动把数字值变换到它们的内部形式
public class TestDemo7 {
public static void main(String args[]) {
for(int i=0;i<args.length;i++){
System.out.println("args["+i+"]:"+args[i]);
}
}
}