1.对象的比较

“==”操作符用于比较两个对象的内存地址值是否相等

equals() 方法用于比较两个对象的内容是否一致

如下列:

1 public classtext3 {2

3 public static voidmain(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 classtext3 {2

3 public static voidmain(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 classtext3 {2

3 public static voidmain(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 ? -->falsestr1== str3 ? -->truestr3== str2 ? -->false

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

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

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

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

3.类对象的产生

格式:

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

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

声明指向“由类所创建的对象”的变量

利用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 classPerson2 {3 privateString name;4 private intage;5 voidtalk()6 {7 System.out.println("wo shi: "+name+", jinnian: "+age+"sui");8 }9

10 public voidsetName(String str)11 {12 name =str;13 }14

15 public void setAge(inta)16 {17 if(a > 0)18 age =a;19 }20

21 publicString getName()22 {23 returnname;24 }25

26 public intgetAge()27 {28 returnage;29 }30 }31

32 public classtext17 {33

34 public static voidmain(String[] args) {35

36 Person p = newPerson();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中却允许多层继承。

多层继承如:

classA

{

}class B extendsA

{

}class C extendsB

{

}

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

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标记的变量(成员变量或局部变量)即为常量,只能赋值一次。

java初学总结_Java初学总结相关推荐

  1. java打星星_java初学打印星星以及九九乘法表

    Java中打印星星,就是为了让初学者熟悉和掌握循环的使用方法: 给定一个图形如: * *** ***** ******* 第一种方式:由循环输出各个部分,再结合起来 for(int i=1;i< ...

  2. java循环变量_Java初学——Java入门变量 常量选择循环结构

    一.初识java 1.jdk的介绍 下载安装jdk 安装后会存在默认的安装路径 bin 目录:存放编译,运行 Java 程序的可执行文件 lib 目录:存放 Java 的类库文件 jre 目录:存放 ...

  3. java华容道教程_Java初学之华容道游戏

    1 packagehhuarongdao;2 import java.awt.*;3 import javax.swing.*;4 5 import java.awt.event.*;6 public ...

  4. 学java用什么写比较好_学习Java需要什么基础,初学Java如何写好代码

    原标题:学习Java需要什么基础,初学Java如何写好代码 初学Java的同学时常会遇到这样的情况,跟着入门教程看过一遍,但需要自己写代码的时候却无从下手:写代码的时候时常会遇到不懂的地方,如果停下来 ...

  5. 免费的java开发工具_Java那些最常用的免费开放工具,分享这15个!

    随着Java行业需求增加,Java工程师岗位薪资节节升高,很多小伙伴想要通过快速的方式掌握Java技能.对于初学Java的小伙伴来说了解一些免费的Java开发工具让我们工作.学习更顺畅,那么免费Jav ...

  6. 用java的io做一个代码计数器,如何制作Java页面计数器_java

    大庆采油六厂采油工艺研究所 王兵 王波 常常逛WWW的人,一定对许多起始页上的计数器感兴趣.每当你光临某个站点的起始页时,它的计数器就很亲切地告诉你,从某年某月某日开始,你是第几位光临的人.你可能也想 ...

  7. 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目

    课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...

  8. 【源码+教程】Java桌球游戏_Java初级项目_Java练手项目_Java项目实战_Java游戏开发

    今天分享的Java开源游戏项目是桌球游戏,初学者也可以用来练习喔~课程详细讲解了一个桌球游戏的编写思路和流程,即使你刚学Java没多久,也可以跟随该教程视频完成属于你自己的桌球游戏!同时,还可以加深和 ...

  9. 【源码+项目部署】Java课程设计项目_Java人力资源管理系统

    对就业和毕业都有帮助的Java实战项目来咯--人力资源管理系统! 人力资源管理系统 |Java项目2小时上手编写_源码+数据库拿走不谢!Java实战项目_Java开发https://www.bilib ...

最新文章

  1. 想用Python学机器学习?Google大神替你写好了所有的编程示范代码
  2. [MOSS 译]如何:在WEB内容查询部件中使用自定义的字段
  3. SNMPM 配置 [linux windows solaris]
  4. vue cli 脚手架上多页面开发 支持webpack2.x
  5. javascript解析json格式的字符串,拼接后显示到表格中
  6. Applese 走迷宫(优先队列+bfs)
  7. 通过快速Java和文件序列化加快速度
  8. 【牛客 - 289K】这是一个沙雕题III(贪心,思维枚举,技巧trick,计算上下界)
  9. php读取模板生成静态功能,php 生成静态页面的办法与实现代码详细版
  10. 利用自定义注解实现权限验证
  11. vue中使用vuex结合sessionStorage做的登录功能
  12. c语言数字游戏程序,C语言实现数字游戏
  13. dict后缀_词根词缀法记单词之dict
  14. Java打印正三角形
  15. Linux账号安全控制与PAM认证模块
  16. 23.1 智能DNS
  17. # 一点毕设的小感悟(词频统计+可视化分析)
  18. html里面的view怎么修改,asp.net mvc 3-在局部视图中修改MVC 3 ViewBag不会保留到_Layout.cshtml...
  19. 安全态势感知系统java_代码分析平台CodeQL学习手记(十三) - 嘶吼 RoarTalk – 回归最本质的信息安全,互联网安全新媒体,4hou.com...
  20. 基于asp.net+vbscript+wsc编写网站

热门文章

  1. dep指定版本 go_Go 包管理工具-dep
  2. 帝国php使用系统变量,帝国cms常用变量汇总
  3. HALCON 20.11:深度学习笔记(6)---有监督训练
  4. 锤击测试使用指数窗会引起什么问题吗?
  5. 避免游戏中的批量 sql
  6. C# Quartz.Net 定时任务的简单使用
  7. sysstat工具的用法
  8. 创新与创业的良性共存 又拍云Open Talk NO.20开讲
  9. android mvp框架基类,Android MVP架构项目搭建封装,基类封装
  10. Java get set6_Java oop 的题与答案6:使用程序模拟英雄金币数,get与set知识,访问修饰符(有图)...