菜鸟笔记 -- Chapter 6.2.3 成员变量】的更多相关文章

6.2.3  成员变量 在Java中对象的属性也称为成员变量[也叫字段].成员变量的类型可以设置为Java中合法的数据类型,其实成员变量就是普通的变量,可以为它设置初始值,也可以不设置初始值,如果不设置初始值会有默认初始值.一个类中成员变量名不能一样,否则会报错.定义了两个同名变量[对于类的成员变量不管程序有没有显示的初始化,Java  虚拟机都会先自动给它初始化为默认值. 整数类型(byte.short.int.long)的基本类型变量的默认值为0. 单精度浮点型(float)的基本类型变量的…
在前面我们讲过高级开发语言大多由7种语法构成,但这是一个很空泛的概述,下,面我们仅就针对Java程序来说一下构成一个Java程序的几大部分,其中类是最小的基本元素.类是封装对象属性和行为的载体,而在Java语言中对象的属性以成员变量的形式存在,对象的方法以成员方法的形式存在.下面我们以一段代码来详细看一下类的组成部分. package inheritance; public class Inheritance extends ParentClass{ @SuppressWarnings("unu…
在Java语言中经常被提到的两个词汇是类与对象,实质上可以将类看作是对象的载体,它定义了对象所具有的功能.学习Java语言必须要掌握类与对象,这样可以从深层次去理解Java这种面向对象语言的开发理念,使程序员更好.更快地掌握Java编程思想与编程方式,掌握类与对象是学习理清Java语言的基础.  菜鸟笔记 -- Chapter 6.1 面向对象概述  目录 6.1.1 类与对象 6.1.1.1 对象头 6.1.1.2 实例数据 6.1.1.3 对齐填充 6.1.1.3 对象大小计算 6.1.2 …
在Chapter3中我们写了第一个Java程序Hello World,并且对此程序进行了分析和常见错误解析.那么我们有没有认真观察一下Java程序的基本结构呢?本节我就来聊一下Java程序的基本结构(参考<算法 第四版>.<Java从入门到精通>.<Thinking in Java>)以及一些网络资料: 一段Java程序(类)或者是一个静态方法(函数)库,或者定义了一个数据类型.会用到下面七种语法,它是Java语言的基础,也是大多数现代语言所共有的.下面我们来看看: 原…
6.4.1  三大特性概述 面向对象的三大特性是Java中一个很重要的基本理念. 封装是面向对象的核心思想.将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的意思.采用封装的思想保证了类内部数据结构的完整性,应用该类的用户不能轻易地直接操作此数据结构,只能执行类允许公开的数据.这样就避免了外部操作对内部数据的影响,提高了程序的可维护性. 继承和多态是面向对象开发语言中非常重要的一个环节,如果在程序中使用得当,可以将整个程序的架构变的非常有弹性,同时可以减少代码的冗…
6.4.2  详解继承 6.4.2.1  继承入门 继承使得程序架构具有一定的弹性,在程序中复用一些已经定义完善的类不仅可以减少软件开发周期,也可以提高软件的可维护性和可扩展性.基本思想是基于某个父类的扩展,制定出一个新的子类,子类可以继承父类原有的非私有的属性和方法,也可以增加原来父类所不具备的属性和方法,或者直接重写父类中的某些方法.在Java中使用extends关键字来标识两个类的继承关系,子类会自动得到基类中所有的域和方法,所有不存在选择性地继承父类.这种技术使得复用以前的代码非常容易,…
6.3 对象 Java是一门面向对象的程序设计语言,对象是由类抽象出来的,所有的问题都是通过对象来处理的,对象可以操作类的属性和方法解决相应的问题,所以了解对象的产生.操作和生存周期对学习Java语言是十分必要的.我们以后在探讨JVM的时候再进行对象生命周期的探讨,这里不做介绍.下面详细介绍对象在Java语言中的使用. 6.3.1  对象的创建 在上面我们介绍过对象是同一类事物抽象出来的一个特例,通过这个特例来处理这类事物出现的问题,在Java语言中通过new操作符来创建对象.在讲解构造方法的时…
6.2.5  代码块 在编程过程中我们通常会遇到如下这种形式的程序: package democlass; public class CodeBlock { { System.out.println("构造代码块1!"); } static{ System.out.println("直接由static关键字进行声明的代码块就是静态代码块!"); } //定义构造函数 public CodeBlock(){ System.out.println("只要一有实…
6.2.4  成员方法 在Java中使用成员方法对应于类对象的行为,在有些地方也会将方法称之为函数,成员方法是定义在类中具有特定功能的一段独立小程序.方法格式如下: 修饰符 返回值类型 成员方法名 (参数类型 形式参数1,参数类型 形式参数2,......){ 执行语句: 1//int a = 2; 2//otherMethod(): return 返回值: } 通过上面看到的格式我们来进行具体的分析: 修饰符即权限修饰符,除了我们常见的public.protected.private和默认之外…
6.2.1  权限修饰符 面向对象的三大特性就有封装,封装隐藏了对象的属性和实现细节,仅对外提供公共访问方式,而这个访问方式就是由权限修饰符控制的.Java中的权限修饰符主要包括private.public.protected和默认(default),及一些其他权限修饰符,这些修饰符控制着对类和类的变量及函数的访问,下面我们来看一下具体的访问权限: 类 修 饰 符 private protected public default 本类 可见 可见 可见 可见 同包其他类或子类 不可见 可见 可见…
6.2.6  内部类 在权限修饰符中,我们已经见过内部类了,但我们看到的只是冰山一角,这节我们详细介绍一下内部类,内部类可以分为成员内部类,局部内部类,匿名内部类,静态内部类.下面我们来讲解一下,在讲解之前,先来看一道面试题: Public classTest{    public static void main(String args[]){        newB();    } } public classA {        public A(){               Syst…
6.1 面向对象概述 在程序开发的初期人们使用结构化开发语言,但是随着时间的流逝,软件的规模越来越庞大,结构化语言的弊端逐渐暴露出来,开发周期被无限制拖延,产品质量也不尽如人意,人们终于发现结构化语言已经不再适合当前的软件开发.这时人们开始将另一种开发思想引入程序中,即面向对象的开发思想.面向对象思想是人类最自然的一种思考方式,它将所有预处理的问题抽象为对象,同时了解这些对象具有哪些相应的属性以及展示这些对象的行为,以解决这些对象面临的一些实际问题,这样就在程序开发中引入可面向对象设计的概念,面…
进入20世纪第二个十年,计算机已经成为生活中一个必不可小的工具了,但我们真的了解计算机吗?计算机有哪些部分构成?不同的计算机又可以做什么样的事情呢?我们的PC和用来做加减乘除的计算器都属于计算机范畴吗?下面我们就来来接认识一下[注:本人从事Java开发小白一枚,有志于增强自身功力,所以自20171130开始从事菜鸟崛起笔记总结和记录,所录材料来自于网络和书籍,会有备注,如果有所忽视,尚请见谅,另小白写日记繁琐,片面,欢迎各位指正和提问,成长需要挫折和责难!] 1.1 计算机:大脑风暴 计算机其实…
我们在String中介绍过它有一个格式化的方法,在其它很多地方,也都能看到格式化的操作,那么这节我们就来认真了解一下Java中的格式化操作. 我们在操作中涉及到的格式化有字符串的格式化和一些其它数据类型的格式化输出等,实际上Java中的格式化操作都是由Java中的一个类java.util.Formatter来处理的.可以将Formatter看作一个翻译器,它将你的格式化字符串与数据翻译成你需要的样式.当你创建一个Formatter对象时,需要向其构造器传递一个些信息,告诉它最终的结果向哪里输出.…
6.4.3  多态 多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定.因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性. 简…
6.2.2  标识符 Java中使用标识符来作为类.方法.字段的名称,在Java基础中我们已经简单了解过标识符的定义方法和驼峰命名.本节我们来研究一下标识符的长度问题,难道类名.方法名都可以无限长吗?我看未必.根据Java虚拟机的规定,Class文件中方法.字段等都需要引用CONSTANT_Utf8_info型常量来描述名称,所以CONSTANT_Utf8_info型常量的最大长度也就是Java中方法\字段名的最大长度.而这里的最大长度就是length的最大值,即u2类型能表达的最大值65535…
4.7 代码注释与编码规范 在程序代码中适当的添加注释可以提高程序的可读性和可维护性.好的编码规范可以使程序更易阅读和理解.下面我们将介绍几种代码注释,以及应该注意的编码规范. 4.7.1 代码注释 通过在程序代码中添加注释可提高程序的阅读性.注释中包含了程序的信息,可以帮助程序员更好地阅读和理解程序.在Java源程序的任意位置都可以添加注释语句.注释中的文字Java编译器不进行编译,所有代码中的注释文字对程序不产生任何影响.Java语言提供了3种添加注释的方法,分别为单行注释.多行注释和文档注…
Java为我们提供了丰富的jar包支持,这其中很多都是我们日常开发所必须的,了解这些包和类,十分有助于我们的开发,深度了解源代码也有助于我们代码的优化和提高;JDK1.8为我们提供了多于4000个类与接口;我们主要从功能模块和特性来认识这些类和接口;如下: 用于比较的两个接口: Comparable:java.lang.Comparable<T> CompareTo()方法来源于此,Java中所有的比较功能,基本都源于这个接口,根据不同的类,有不同的实现; Comparator:java.ut…
Java中的成员变量和局部变量 一:成员变量: 成员变量在类中定义,用来描述对象将要有什么 成员变量可以被本类的方法使用,也可以被其他类的方法使用,成员变量的作用域在整个类内部都是可见的 二:局部变量: 在类的方法中定义,在方法中临时保存 只能被当前方法使用,局部变量的作用域仅限于定义它的方法 如: public class Telphone { float screen; //成员变量 float cpu; //成员变量 float mem; //成员变量 public void call()…
在类中,变量根据定义的位置不同,可以分为成员变量和局部变量.…
Java变量按其作用域可分为:成员变量和局部变量.注意:在Java中是没有全局变量这个概念的 一.成员变量: 成员变量是在类中定义的变量,具体可分为类变量与实例变量--有无static修饰 实例变量的特点: 没有创建实例前是不会分配内存空间的: 从有实例开始,实例变量就存在了: 实例被销毁,实例变量就不存在了: 0~N个实例变量,程序每创建一个实例,系统就为该实例分配一块内存 类变量的特点: 从有类开始,类变量就存在了,一个JVM中类信息只要一个即可. 每个JVM最多只加载一个类一次,系统就为该…
一.反射获取成员变量并且使用: 1.获取字节码文件对象:         Class c = Class.forName("cn.itcast_01.Person"); 2.使用无参构造器创建对象 Constructor  con = c.getConstructor(); Object  obj = con.newInstance();   3.获取所有的成员变量:        Field[] fields = c.getFields();//获取所有公共(public)成员变量…
成员变量和局部变量的区别 1在类中的位置不同 局部变量:类的方法体内 成员变量:类的方法之外 2内存的不同位置 局部变量:在栈内存中 成员位置:在堆内存 3生命周期不同 局部变量:随着方法的调用而存在,随着方法调用的结束而消失 成员变量:随着对象的创建而创建,对象的消失而消失 4初始化值不同 局部变量:没有默认的初始化值,先定义赋值 成员变量:有默认的初始化值 注意:成员变量名称可以和成员变量的相同,在方法使用的时候采用就近原则 测试: class Varialbe { //成员变量 //int…
类型成员 Type Member 结构体 struct 的成员很简单,只有变量. 类的成员就很多了: 数据成员 data member 描述对象(本讲重点) · 实例变量  instance variable · 属性 property 函数成员 function member · 方法 method · 初始化器  init · 析构器  dealloc 类的属性: 默认情况下,编译器会为属性定义propertyName自动合成: 一个getter访问器方法: propertyName 一个s…
当创建一个对象时,各种成员变量及构造方法的初始化或调用顺序是怎样的呢? (1).如果类尚未加载,则先初始化静态成员变量和静态代码块,再初始化成员变量,最后调用相应的构造方法: (2).如果类已经加载过了,则静态成员变量已经初始过了,静态代码块也已执行,这时只需初始化成员变量,再调用构造方法就可以了: (3).如果类还有父类,则按(1)或(2)的顺序先初始化父类,再初始化子类. 下面以例子详细说明. 包human中定义了四个类,分别为Person.Student.DustMan.TestMain:…
1.Java有三种访问权限修饰符,分别为public.protected.private,还有一种为缺省权限修饰符的情况,记为default.其中,可以由public和default来修饰类:这四种修饰符都可以修饰成员变量和成员方法.每一种修饰符对应不同的访问范围,下面以下图为例详细说明. 图1 private只可以覆盖圆1,即只有本类可以访问: default可以覆盖到圆3,即本类.同包子类.同包其他类都可以访问,简单说就是与本类同包的所有类都可以访问: protected可以覆盖到圆4,即本…
前面我们学习了类的定义,我们不难理解,定义类事实上就是在定义类中的成员. 成员包含成员变量和成员函数. 说到成员变量,我们非常自然会想到前面提到过的局部变量,那么它们之间有什么差别呢? 首先我们定义一个People类: class People//定义一个People类 { String name;//姓名属性 int age;//年龄属性 char sex; void run()//跑的方法 { System.out.println(name+"開始跑步了."); } void in…
1. 反射获取成员变量并且使用: (1)获取字节码文件对象:         Class c = Class.forName("cn.itcast_01.Person"); (2)使用无参构造器创建对象 Constructor  con = c.getConstructor(); Object  obj = con.newInstance();   (3)获取所有的成员变量:        Field[] fields = c.getFields();//获取所有公共(public)成…
public class Test { int c; //成员变量(实例变量) static int s1; //静态变量(类变量)(全局变量) public static void main(String[] args){ //static int s2; //局部变量不允许static定义 int b; //局部变量 Test t=new Test(); System.out.println(t.c); //成员变量系统会提供默认初始值,随着对象创建而存在(实例变量) b=1; System…
这一节我们看一看成员变量与静态变量的差别所在. 什么是静态变量呢?我们上节用statickeyword时就提到了静态变量.也就是说用statickeyword修饰的变量就是静态变量. 我们在6.4节学习了成员变量与局部变量的差别.这一节我们重点看看成员变量与静态变量之间的差别. 我们看代码: class Person { String name;//姓名,这是一个成员变量 static String country = "中国";//国籍,这是一个静态变量 public void pr…