java初学总结_Java初学总结
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初学总结相关推荐
- java打星星_java初学打印星星以及九九乘法表
Java中打印星星,就是为了让初学者熟悉和掌握循环的使用方法: 给定一个图形如: * *** ***** ******* 第一种方式:由循环输出各个部分,再结合起来 for(int i=1;i< ...
- java循环变量_Java初学——Java入门变量 常量选择循环结构
一.初识java 1.jdk的介绍 下载安装jdk 安装后会存在默认的安装路径 bin 目录:存放编译,运行 Java 程序的可执行文件 lib 目录:存放 Java 的类库文件 jre 目录:存放 ...
- java华容道教程_Java初学之华容道游戏
1 packagehhuarongdao;2 import java.awt.*;3 import javax.swing.*;4 5 import java.awt.event.*;6 public ...
- 学java用什么写比较好_学习Java需要什么基础,初学Java如何写好代码
原标题:学习Java需要什么基础,初学Java如何写好代码 初学Java的同学时常会遇到这样的情况,跟着入门教程看过一遍,但需要自己写代码的时候却无从下手:写代码的时候时常会遇到不懂的地方,如果停下来 ...
- 免费的java开发工具_Java那些最常用的免费开放工具,分享这15个!
随着Java行业需求增加,Java工程师岗位薪资节节升高,很多小伙伴想要通过快速的方式掌握Java技能.对于初学Java的小伙伴来说了解一些免费的Java开发工具让我们工作.学习更顺畅,那么免费Jav ...
- 用java的io做一个代码计数器,如何制作Java页面计数器_java
大庆采油六厂采油工艺研究所 王兵 王波 常常逛WWW的人,一定对许多起始页上的计数器感兴趣.每当你光临某个站点的起始页时,它的计数器就很亲切地告诉你,从某年某月某日开始,你是第几位光临的人.你可能也想 ...
- 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目
课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...
- 【源码+教程】Java桌球游戏_Java初级项目_Java练手项目_Java项目实战_Java游戏开发
今天分享的Java开源游戏项目是桌球游戏,初学者也可以用来练习喔~课程详细讲解了一个桌球游戏的编写思路和流程,即使你刚学Java没多久,也可以跟随该教程视频完成属于你自己的桌球游戏!同时,还可以加深和 ...
- 【源码+项目部署】Java课程设计项目_Java人力资源管理系统
对就业和毕业都有帮助的Java实战项目来咯--人力资源管理系统! 人力资源管理系统 |Java项目2小时上手编写_源码+数据库拿走不谢!Java实战项目_Java开发https://www.bilib ...
最新文章
- 想用Python学机器学习?Google大神替你写好了所有的编程示范代码
- [MOSS 译]如何:在WEB内容查询部件中使用自定义的字段
- SNMPM 配置 [linux windows solaris]
- vue cli 脚手架上多页面开发 支持webpack2.x
- javascript解析json格式的字符串,拼接后显示到表格中
- Applese 走迷宫(优先队列+bfs)
- 通过快速Java和文件序列化加快速度
- 【牛客 - 289K】这是一个沙雕题III(贪心,思维枚举,技巧trick,计算上下界)
- php读取模板生成静态功能,php 生成静态页面的办法与实现代码详细版
- 利用自定义注解实现权限验证
- vue中使用vuex结合sessionStorage做的登录功能
- c语言数字游戏程序,C语言实现数字游戏
- dict后缀_词根词缀法记单词之dict
- Java打印正三角形
- Linux账号安全控制与PAM认证模块
- 23.1 智能DNS
- # 一点毕设的小感悟(词频统计+可视化分析)
- html里面的view怎么修改,asp.net mvc 3-在局部视图中修改MVC 3 ViewBag不会保留到_Layout.cshtml...
- 安全态势感知系统java_代码分析平台CodeQL学习手记(十三) - 嘶吼 RoarTalk – 回归最本质的信息安全,互联网安全新媒体,4hou.com...
- 基于asp.net+vbscript+wsc编写网站
热门文章
- dep指定版本 go_Go 包管理工具-dep
- 帝国php使用系统变量,帝国cms常用变量汇总
- HALCON 20.11:深度学习笔记(6)---有监督训练
- 锤击测试使用指数窗会引起什么问题吗?
- 避免游戏中的批量 sql
- C# Quartz.Net 定时任务的简单使用
- sysstat工具的用法
- 创新与创业的良性共存 又拍云Open Talk NO.20开讲
- android mvp框架基类,Android MVP架构项目搭建封装,基类封装
- Java get set6_Java oop 的题与答案6:使用程序模拟英雄金币数,get与set知识,访问修饰符(有图)...