类与对象

java是严格的面向对象的语言,所以里面所有功能的实现都是以类和对象的形式来实现的,类是方法和数据的集合,对象是类的实现(即类描述的对象)。在使用类的方法时,需要定义一个该类的对象来使用其方法(静态方法因为始终在内存内所以不需要定义对象来使用,但因此也不能类的非静态成员)。

在定义对象变量的过程中,实际上分为声明类的引用类型的一个变量(一个引用)、将一个“new”后的对象赋值给该对象变量(分配内存)这两个过程,所以显而易见我们常用的对象变量不是直接使用这个对象,所以会出现下面这种现象。ps:也因为这样可以将变量初始化为null。

运行上面的代码后发现这两个对象不等,因为“==”判断的是地址是否相同,new里两次就会有不同的地址。ps:如果变量是原始数据变量比较的就是数据大小。

动手动脑

问题显而易见,Foo类仅有个含有一个int参数,但在定义时是无参构造函数。

进行实验

尽管有初始化块,但却在成员变量初始化的上方,所以在第一个问号处输出结果为100;

由于使用了带有int参数的构造函数把300赋值给field,所以输出结果为300;

Java字段初始化规律:

1.类的构造方法优先,若无对成员变量赋值的操作就看有没有初始化块和定义时指定的默认值;

2.初始化块和定义时指定的默认值优先为排在“下方”的为最终结果;

3.都无,就为null(尽量不要产生这种结果)。

动手动脑

classRoot

{static{

System.out.println("Root的静态初始化块");

}

{

System.out.println("Root的普通初始化块");

}publicRoot()

{

System.out.println("Root的无参数的构造器");

}

}class Mid extendsRoot

{static{

System.out.println("Mid的静态初始化块");

}

{

System.out.println("Mid的普通初始化块");

}publicMid()

{

System.out.println("Mid的无参数的构造器");

}publicMid(String msg)

{//通过this调用同一类中重载的构造器

this();

System.out.println("Mid的带参数构造器,其参数值:" +msg);

}

}class Leaf extendsMid

{static{

System.out.println("Leaf的静态初始化块");

}

{

System.out.println("Leaf的普通初始化块");

}publicLeaf()

{//通过super调用父类中有一个字符串参数的构造器

super("Java初始化顺序演示");

System.out.println("执行Leaf的构造器");

}

}public classTestStaticInitializeBlock

{public static voidmain(String[] args)

{newLeaf();

}

}

结果:

Root的静态初始化块

Mid的静态初始化块

Leaf的静态初始化块

Root的普通初始化块

Root的无参数的构造器

Mid的普通初始化块

Mid的无参数的构造器

Mid的带参数构造器,其参数值:Java初始化顺序演示

Leaf的普通初始化块

执行Leaf的构造器

Java的初始化块、静态初始化块、构造函数的执行顺序:

1.静态优先,因为是编译器在最开始就创建在内存中;

2.超类的初始化块优先,很正常,因为定义子类的时候就得定义超类;

3.其次为构造器,同上;

一个有趣的问题

public classTest

{public int a = 0;private int b = 1;static voidtest(Test a)

{

a.a= 2;

a.setB(3);

}public intgetB()

{returnb;

}public void setB(intb)

{this.b =b;

}public static voidmain(String[] args)

{

Test a=newTest();

System.out.println("a="+a.a);

System.out.println("b="+a.getB());

Test.test(a);

System.out.println("a="+a.a);

System.out.println("b="+a.getB());

}

}

只要加入个引用类型的参数就能实现对实例化的类的成员进行访问。

Integer的特性

很简单,这是自动装箱的规范要求。

规范要求boolean、byte、char小于等于127,介于-128~127之间的short和int被包装到固定对象中,所以“==”才会判等。

你已经创建了多少个对象?

public classTest

{static int number = 0;publicTest()

{

number++;

}public static voidmain(String[] args)

{

Test a;while (Test.number <= 5)

{

a= newTest();

}

System.out.println(Test.number);

}

}

java语法基础讲课经典课件_【第四次JAVA课,java语法基础】课件总结相关推荐

  1. java学了之后老忘_老程序员的建议,零基础学java,常见的误区和解决方法

    写一篇经验分享的文章,现在很多人学习java 第一,觉得java很难, 第二,觉得java 找工作不好找, 第三,也有人说java饱和了, 现在确实是行业的要求越来越高了, 早在07年的时候把java ...

  2. 玩java游戏买什么手机好用又便宜_每一款JAVA游戏都是经典,但只有四款游戏,是90%玩家从小玩到大...

    2000年彩屏手机开始流行,诺基亚作为当年世界第一的手机厂商,更是研发出了多款造型酷炫的手机,例如翻盖.推盖以及后来的触屏机,都曾被我们使用过.我还记得当年小的时候,拿着爸爸的手机在上面搜索和下载各种 ...

  3. java蓝桥杯加法变乘法_蓝桥杯-加法变乘法-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  4. java内存 phd文件抓取_您可以从IBM PHD Java堆转储中提取字符串的值吗?

    我有一个来自IBM jvm的PHD格式堆转储,我希望检查一些字符串的值.使用Sun JVM的二进制hprof转储,这是可能的,但是我无法从IBM转储中恢复此信息. 我试过了: >具有IBM DT ...

  5. 全民一起玩python课件_全民一起玩Python课基础+提高篇[免费学习]

    全民一玩Python系列由杨洋博士精心制作,面向所有希望学习Python编程.进而能够在学习和工作中编写办公自动化.网页信息提取.数据分析处理.人工智能应用.娱乐游戏应用等实用程序的各行业人士. 制作 ...

  6. java唱哪首歌好听_盘点四首戳爷最好听的歌曲,每一首都很经典,你最喜欢哪一首?...

    第一首歌曲的是戳爷第一张专辑中的一首非常有很大意义的歌曲,这首歌曲就是戳爷演唱的一首为LGBTQ平权的歌曲,这首歌曲的名字就是<heaven>,小编也是非常喜欢这是歌曲的啊,并且,很多人也 ...

  7. java会被rust替代吗_自从尝了 Rust,Java 突然不香了

    Rust 是软件行业中相对而言比较新的一门编程语言,如果从语法上来比较,该语言与 C++ 其实非常类似,但从另一方面而言,Rust 能更高效地提供许多功能来保证性能和安全.而且,Rust 还能在无需使 ...

  8. 零基础学python 视频_全网最全Python视频教程真正零基础学习Python视频教程 490集...

    Python Web开发-进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程 [课程简介] 这是一门Python Web开发进阶课程,手把手教你用Python开发完整的商业 ...

  9. java代码异常处理会影响性能_编写高质量代码改善java程序的151个建议——[110-117]异常及Web项目中异常处理...

    原创地址:http://www.cnblogs.com/Alandre/(泥沙砖瓦浆木匠),需要转载的,保留下! 文章宗旨:Talk is cheap show me the code. 大成若缺,其 ...

最新文章

  1. 高性能Mysql主从架构的复制原理及配置详解
  2. 虚拟机下Linux安装图解之四:VMware Tools 的安装
  3. java无ide编译_[转]无IDE时编译和运行Java
  4. yum 安装nginx
  5. vscode与git分支_Visual Studio Code 使用Git进行版本控制
  6. IMP-00017: 由于 ORACLE 错误 6550解决办法
  7. 0-1总体分布下的参数假设检验示例一(SPSS实现)
  8. 服务器脱机状态,从脱机工作切换到联机工作
  9. 拓端tecdat|matlab实现MCMC的马尔可夫转换MS- ARMA - GARCH模型估计
  10. 推荐几个偷网站的小工具
  11. 招财宝计算器android,招财宝收益计算器
  12. maxscale mysql 主从_使用Maxscale实现mysql读写分离
  13. QQ邮箱功能详解:垃圾邮件过滤(转)
  14. 【Android】MyTool工具界面:秒表
  15. 测试时间不够,项目要如期发布如何保证测试质量
  16. Python绘制股票K线图
  17. 【PPT计时器】如何在wps演示PPT中使用定时器、计时器功能?不使用第三方插件,仅仅使用第三方计时器软件
  18. c语言程序设计工资纳税系统,C语言程序设计纳税工资系统
  19. AAAI 2018 杰出论文出炉,两位中国留学生共同获奖
  20. 我的世界手机版怎么增加服务器,我的世界手机版服务器怎么创建

热门文章

  1. 龙芯3a5000下安装达梦8和Qt
  2. 分享如何设计调查问卷和怎样分析问卷数据(转载)
  3. UML常见依赖关系图
  4. Nestjs框架快速入门之项目搭建与小试牛刀
  5. oracle日期转换为季度,ORACLE时间字段取年、月、日、季度
  6. Spawn-FCGI安装
  7. UBNT ER-4 配置IPsec实现不同网络互访
  8. 自制作的一个手机平衡球游戏!
  9. github怎么切换到gitee_将博客从github迁移至gitee
  10. 思必驰俞凯图解认知计算是什么?