前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java初学总结

Java初学总结

作者头像
猿人谷
发布2018-01-17 15:27:23
6890
发布2018-01-17 15:27:23
举报
文章被收录于专栏:猿人谷猿人谷

1.对象的比较

  •    “==”操作符用于比较两个对象的内存地址值是否相等
  •    equals() 方法用于比较两个对象的内容是否一致

 如下列:

 1 public class text3 {
 2 
 3     public static void main(String[] args) {
 4         String str1 = new String("java");
 5         String str2 = new String("java");
 6         String str3 = str2;
 7         
 8         if(str1 == str2)
 9         {
10             System.out.println("str1 == str2");
11         }
12         else
13         {
14             System.out.println("str1 != str2");
15         }
16         if(str2 == str3)
17         {
18             System.out.println("str2 == str3");
19         }
20         else
21         {
22             System.out.println("str2 != str3");
23         }    
24 
25     }
26 
27 }

运行结果为:

str1 != str2
str2 == str3

str1与str2的内容完全一样,为什么会不等于呢? 这两个对象指向不同的内存空间,所以它们的内存地址是不一样的。用“==”比较的是内存地址值。

如要比较内容,可用“equals”。

 1 public class text3 {
 2 
 3     public static void main(String[] args) {
 4         String str1 = new String("java");
 5         String str2 = new String("java");
 6         String str3 = str2;
 7         
 8         if(str1.equals(str2))   
 9         {
10             System.out.println("str1 == str2");
11         }
12         else
13         {
14             System.out.println("str1 != str2");
15         }
16         if(str2.equals(str3))
17         {
18             System.out.println("str2 == str3");
19         }
20         else
21         {
22             System.out.println("str2 != str3");
23         }    
24 
25     }
26 
27 }

运行结果为:

str1 == str2
str2 == str3

 2.两种String对象的声明方式到底有什么不同?

String str1 = new String("java");

        String str2 = "java";

如下例:

 1 public class text3 {
 2 
 3     public static void main(String[] args) {
 4         String str1 = "java";
 5         String str2 = new String("java");
 6         String str3 = "java";
 7                 
 8         System.out.println("str1 == str2 ? -->"+(str1 == str2));
 9         System.out.println("str1 == str3 ? -->"+(str1 == str3));
10         System.out.println("str3 == str2 ? -->"+(str3 == str2));
11         
12     }
13 }

运行结果:

str1 == str2 ? -->false
str1 == str3 ? -->true
str3 == str2 ? -->false

str1与str3相等,则证明str1与str3是指向同一个内存空间的。

String对象的内容一旦声明则不能轻易改变。

如果想改变一个String对象的值,则第一步要做的是先将原有的String引用断开,之后再开辟新的内存空间。

用new关键字开辟String对象的内存空间的话,则实际上就开辟了两个内存空间。

3.类对象的产生

格式:

类名  对象名 = new 类名();

创建属于某类的对象,需要通过如下两个步骤来实现:

  1. 声明指向“由类所创建的对象”的变量
  2. 利用new创建新的对象,并指派给先前所创建的变量

举例:创建Person类的对象

Person p;                    //先声明一个Person类的对象p
p = new Person();     //用new关键字实例化Person的对象p

当然也可以用如下方式来声明变量:

Person p = new Person() ;     // 声明Person对象p并直接实例化此对象

      对象只有在实例化之后才能被使用,而实例化对象的关键字就是new。

4.访问对象中某个变量或方法

访问属性:   对象名称。属性名
访问方法:   对象名称。方法名()

如:想访问Person类中的name和age属性

p.name;        //访问Person类中的name属性
p.age;            //访问Person类中的age属性

5.类的属性封装(private)

要设置或取得属性值,则只能用setXxx()getXxx()方法,这是一个明确且标准的规定。

封装类中的属性或方法:

封装属性:  private 属性类型 属性名
封装方法:  private 方法返回类型  方法名称(参数)

加入一些setXxx()getXxx()方法,主要用来设置和取得类中的私有属性,解决封装问题,如下列:

 1 class Person
 2         {
 3             private String name;
 4             private int age;
 5             void talk()
 6             {
 7                 System.out.println("wo shi:  "+name+", jinnian: "+age+"sui");
 8             }
 9             
10             public void setName(String str)
11             {
12                 name = str;
13             }
14             
15             public void setAge(int a)
16             {
17                 if(a > 0)
18                     age = a;
19             }
20             
21             public String getName()
22             {
23                 return name;
24             }
25             
26             public int getAge()
27             {
28                 return age;
29             }
30         }
31         
32 public class text17 {
33 
34     public static void main(String[] args) {
35         
36         Person p = new Person();
37         p.setName("zhang san");
38         p.setAge(-25);
39         p.talk();
40 
41     }
42     
43 }

运行结果:

wo shi:  zhang san, jinnian: 0sui

 6.内部类

定义内部类的格式:

标示符  class  外部类的名称
{
     //外部类的成员
     标示符  class  内部类的名称
    {
          //内部类的成员
    }   
}

外部类是无法找到内部类中所声明的属性,而内部类则可以访问外部类的属性。

用static声明的内部类则变成外部类,但是用static声明的内部类不能访问非static的外部类属性。(《Java基础教程》P193)

 7.类的继承

类的继承格式:

class  父类                 //定义父类
{
}

class  子类  extends  父类   // 用extends关键字实现类的继承
{
}

在java中只允许单继承,不允许多重继承,也就是说一个子类只能有一个父类,但java中却允许多层继承

多层继承如:

class A
{
}
class  B  extends  A
{
}
class  C  extends  B
{
}

子类对象在实例化时会默认先去调用父类中的无参构造方法,之后再调用本类中的相应构造方法

super 主要的功能是完成子类调用父类中的内容,也就是调用父类中的属性或方法

用super调用父类中的构造方法,只能放在程序的第一行。

super调用属性或方法:

super.父类中的属性;
super.父类中的方法();

8.this与super的比较

this

  • 1.表示当前对象
  • 2.调用本类中的方法或属性
  • 3.调用本类中的构造方法时,放在程序首行

super

  • 1.子类调用父类的方法或属性
  • 2.调用父类中的构造方法时,放在程序首行

从上表中发现,用super或this调用构造方法时都需要放在首行。所以,super与this调用构造方法的操作时不能同时出现的

9.抽象类定义规则

  • 抽象类和抽象方法都必须用abstract关键字来修饰
  • 抽象类不能被实例化,也就是不能用new关键字去产生对象
  • 抽象方法只需声明,而不需实现
  • 含有抽象方法的类必须被声明为抽象类,抽象类的子类必须复写所有的抽象方法后才能被实例化,否则这个子类还是个抽象类

10.final关键字

在Java中声明类、属性和方法时,可使用关键字final来修饰。

  • final标记的类不能被继承。
  • final标记的方法不能被子类复写。
  • final标记的变量(成员变量或局部变量)即为常量,只能赋值一次。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-05-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档