类与对象

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

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

  

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

动手动脑

  

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

进行实验

  

  

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

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

  Java字段初始化规律:

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

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

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

动手动脑

class Root
{static{System.out.println("Root的静态初始化块");}{System.out.println("Root的普通初始化块");}public Root(){System.out.println("Root的无参数的构造器");}
}
class Mid extends Root
{static{System.out.println("Mid的静态初始化块");}{System.out.println("Mid的普通初始化块");}public Mid(){System.out.println("Mid的无参数的构造器");}public Mid(String msg){//通过this调用同一类中重载的构造器this();System.out.println("Mid的带参数构造器,其参数值:" + msg);}
}
class Leaf extends Mid
{static{System.out.println("Leaf的静态初始化块");}{System.out.println("Leaf的普通初始化块");}    public Leaf(){//通过super调用父类中有一个字符串参数的构造器super("Java初始化顺序演示");System.out.println("执行Leaf的构造器");}
}
public class TestStaticInitializeBlock
{public static void main(String[] args) {new Leaf();}
}

  结果:

    Root的静态初始化块
    Mid的静态初始化块
    Leaf的静态初始化块
    Root的普通初始化块
    Root的无参数的构造器
    Mid的普通初始化块
    Mid的无参数的构造器
    Mid的带参数构造器,其参数值:Java初始化顺序演示
    Leaf的普通初始化块
    执行Leaf的构造器

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

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

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

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

一个有趣的问题

  

  

public class Test
{public int a = 0;private int b = 1;static void test(Test a){a.a = 2;a.setB(3);}public int getB(){return b;}public void setB(int b){this.b = b;}public static void main(String[] args){Test a=new Test();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 class Test
{static int number = 0;public Test(){number++;}public static void main(String[] args){Test a;while (Test.number <= 5){a = new Test();}System.out.println(Test.number);}
}

转载于:https://www.cnblogs.com/limitCM/p/9827181.html

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

  1. webRTC(四),android应用开发基础课件

    //获取屏幕约束 var divConstraints = document.querySelector('div#constraints') function gotMediaStream(stre ...

  2. java与javaScript 语法的区别

    目录 前言 一.java和javaScript是什么?有何不同? 1.java简介 2.javaScript简介 二,语法区别 -1.语法基础 java语言基础 Js语法基础 -2.数据类型 java ...

  3. java的基础语法是什么_java语法基础

    java语法基础 引导语:作为一门计算机语言,Java也是有语法的,以下是百分网小编分享给大家的java语法基础,欢迎阅读! java语法基础: 1,关键字:其实就是某种语言赋予了特殊含义的单词. 保 ...

  4. java的封装性_Java10-java语法基础(九)——java的封装性

    Java10-java语法基础(九)--java的封装性 一.Java的三大特性:封装.多态.继承 封装:通过类封装对象的数据成员和成员方法,保证只有可信的类或者对象能够访问这些方法和数据成员,对不可 ...

  5. java类继承语法_java类的继承(基础)

    ---恢复内容开始--- 这篇随笔和大家讲讲java中类的继承是什么?希望对你们有所帮助. 目录 一.java继承是什么? 二.为什么使用java继承 三.java继承的实现 1.1  java继承的 ...

  6. 【JAVA SE】第十四章 集合框架、语法糖和泛型

    第十四章 集合框架.语法糖和泛型 文章目录 第十四章 集合框架.语法糖和泛型 一.集合框架 1.概念 2.接口 二.语法糖 1.概念 2.解语法糖 三.泛型 1.概念 2.泛型类 3.泛型接口 4.泛 ...

  7. 【Java基础】语法基础

    本文适合有编程基础或是需要Java语言复习的家人们食用~ 一.Java语言介绍 本篇文章使用的JDK版本是1.8(即JDK 8) Java语言是运行在JVM上的,有了JVM,Java语言得以在不同操作 ...

  8. college java (java基础黑皮书)一到四章笔记总结

    college java(1-4) college java (java基础黑皮书) 第一章 java入门 java的地位 java的特点与组成: 简单的java程序 1.系统环境的设置 2源文件的编 ...

  9. 语法基础(Java)

    Java语法基础 学习目标 Java中的数据类型 变量与常量 运算符 数据类型: 基本类型: 类型 默认值 位长 取值范围 boolean(布尔型) false 1 false,true byte(字 ...

  10. 【JAVA SE】第二章 Java语法基础、数据类型、基本类型的字面值、基本类型的类型转换和运算规则

    第二章 Java语法基础.数据类型.基本类型的字面值.基本类型的类型转换.运算规则和标识符命名风格 文章目录 第二章 Java语法基础.数据类型.基本类型的字面值.基本类型的类型转换.运算规则和标识符 ...

最新文章

  1. dell笔记本电脑驱动_笔记本电脑摄像头打不开,怎么办?总结经验(基于摄像头本身是完好的)...
  2. Elasticsearch分布式一致性原理剖析(三)-Data篇
  3. 我看西电通院月考——学生应该做点什么?
  4. html中basefont标签,HTML的basefont标签
  5. 小甲鱼python课后答案40讲_小甲鱼Python第二十一讲课后习题
  6. Java程序员晋升之路:“Java高级核心知识全面解析
  7. Python--详解Python中re.sub
  8. 从“元宇宙”看国内外产业发展差距
  9. EDI许可申请 简介
  10. 防止 MySQL-PHP 网站被玩弄的方法
  11. Pascal VOC Challenge
  12. 【window】重启IIS服务
  13. netty 权威指南~第11章——WebSoket协议开发
  14. 毕业生 - 哈尔滨工业大学社会计算与信息检索研究中心 - 理解语言,认知社会...
  15. 2021最新Java JDK1.8的安装教程
  16. 第二章 AIR202_Lua_串口控制
  17. NYOJ-234-DP(吃土豆)
  18. 【计算情与思】大学生学习和发展的思考和建议
  19. 屏录录制工具,Gif录制工具
  20. NVIDIA apex安装

热门文章

  1. 常州儿童计算机培训,常州推荐儿童编程培训班哪几家靠谱
  2. python筛选质数并一行输出五个_python使用filter方法递归筛选法求N以内的质数素数附一行打印心形标记的代码解析...
  3. python解常微分方程龙格库_求解常微分方程组初值问题的龙格库塔法分析及其C代码...
  4. mysql角色附权和解除权限_MySql授权和撤销权限操作
  5. lepus监控oracle数据库_实用脚本一键监控oracle数据库索引使用状况
  6. 同步手机文件到家庭服务器,同步文件到服务器
  7. java spring 事务提交_Spring 事务提交之后再执行操作
  8. 电脑右下,电脑右下图标怎么显示出来怎么办
  9. php数量百分比,mysql PHP行数+百分比
  10. 系统学习NLP(二十三)--浅谈Attention机制的理解