实例变量

Optional优雅的使用null

[亡魂溺海] 提交于 2020-03-17 05:56:37
在我们学习和使用Guava的Optional之前,我们需要来了解一下Java中null。因为,只有我们深入的了解了null的相关知识,我们才能更加深入体会领悟到Guava的Optional设计和使用上的优雅和简单。   null代表不确定的对象:   Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。   Java中,变量的使用都遵循一个原则:先定义,并且初始化后,才可以使用。例如如下代码中,我们不能定义int age后,不给age指定值,就去打印age的值。这条对对于引用类型变量也是适用的(String name也同样适用),在编译的时候就会提示为初始化.   在Java中,Java默认给变量赋值:在定义变量的时候,如果定义后没有给变量赋值,则Java在运行时会自动给变量赋值。赋值原则是整数类型int、byte、short、long的自动赋值为0,带小数点的float、double自动赋值为0.0,boolean的自动赋值为false,其他各供引用类型变量自动赋值为null。    null本身不是对象,也不是Objcet的实例:   null只是一个关键字,用来标识一个不确定的对象,他既不是对象,也不是Objcet对象的实例。null不属于java.lang.Object类型,可见

6、说说反射的用途及实现

有些话、适合烂在心里 提交于 2020-03-16 11:45:28
一、Java反射框架主要提供以下功能: 1.在运行时判断任意一个对象所属的类; 2.在运行时构造任意一个类的对象; 3.在运行时判断任意一个类所具有的成员变量和方法(通过反射甚至可以调用private方法); 4.在运行时调用任意一个对象的方法 二、主要用途 : 1、反射最重要的用途就是开发各种通用框架。 三、基本反射功能的实现(反射相关的类一般都在java.lang.relfect包里): 1、获得Class对象 使用Class类的forName静态方法,直接获取某一个对象的class, 调用某个对象的getClass()方法 2、判断是否为某个类的实例 用instanceof关键字来判断是否为某个类的实例 3、创建实例 使用Class对象的newInstance()方法来创建Class对象对应类的实例。 先通过Class对象获取指定的Constructor对象,再调用Constructor对象的newInstance()方法来创建实例。 4、获取方法 getDeclaredMethods() 5、获取构造器信息 getDeclaredMethods() getMethods() getMethod() 6、获取类的成员变量(字段)信息 getFiled: 访问公有的成员变量 getDeclaredField:所有已声明的成员变量。但不能得到其父类的成员变量

类方法和类实例的区别

我们两清 提交于 2020-03-14 19:53:54
方法根据是否有static修饰也可以分为类方法和对象方法(实例方法)。 访问时,类方法可以直接通过类名来引用,而实例方法必须通过对象名来访问,也就是说要想使用实例方法,就必须创建一个该类的对象。 Math类的方法都是类方法,在使用时,可以如下: double s=Math.sin(30); Properties prop=System.getProperties(); 一般而言,类方法的执行不依对象而改变。在定义方法时,一些与对象无关的通用方法通常被定义为类方法。由于类方法是属于整个类的,并不属于哪个对象,所以类方法的方法体中不能有与类的对象有关的内容,所以出现下面的情况的时候会出现编译错误: 1 类方法中不能引用对象变量 2 类方法中不能调用类的对象方法 3 在类方法中不能使用super、this关键字。 使用对象方法时,必须先创建对象实例,然后才能使用,如: Student stu=new Student("0701956"); stu.showAcademicRecord(); 与类方法相比,对象方法基本上没有什么限制: 1 对象方法可以引用对象变量,也可以引用类变量 2 对象方法中可以调用类方法 3 对象方法中可以使用super、this关键字。 来源: https://www.cnblogs.com/xianspace/archive/2008/12/07/1349733

区分类变量和实例变量

喜夏-厌秋 提交于 2020-03-12 08:45:04
想看重点的,可直接看人话部分。 变量分类: 一、根据数据类型分类: 1.基本数据类型 2.引用数据类型 二、根据类声明位置分类: 1.成员变量 (1)类变量 (2)实例变量 2.局部变量 三、区分类变量和实例变量: 首先要区分好类和对象!! - 官方话: 类 是对对象的抽象。 对象 是对客观事物的抽象。 类变量 也叫静态变量,也就是在变量前加了static 的变量。 实例变量 也叫对象变量,即没加static 的变量。 所有的实例对象都共用一个类变量,内存中只有一处空间是放这个类变量值的。 如果一个对象把类变量值改了,另外一个对象再取类变量值就是改过之后的了。 (静态变量并不是说其就不能改变值,不能改变值的量叫常量。 其拥有的值是可变的 ,而且它会保持最新的值。说其静态,是因为它不会随着函数的调用和退出而发生变化。即上次调用函数的时候,如果我们给静态变量赋予某个值的话,下次函数调用时,这个值保持不变。) - 人话: 类 是规则。 对象 是规则下的产品。 类变量 是规则的一部分。 实例变量 是产品的一部分。 一个规则在制定好了之后,类变量也被制定好了,已经存在。但是实例变量并没有被创生。 当第一个产品被创造出来的时候, 类变量 已经存在, 实例变量1 此时存在。 当第二个产品被创造出来的时候, 类变量 已经存在, 实例变量2 此时存在。 当第三个产品被创造出来的时候, 类变量

Java 静态变量和静态方法

故事扮演 提交于 2020-03-11 01:06:06
在类中,使用 static 修饰符修饰的属性(成员变量)称为静态变量,也可以称为类变量,常量称为静态常量,方法称为静态方法或类方法,它们统称为静态成员,归整个类所有。 静态成员不依赖于类的特定实例,被类的所有实例共享,就是说 static 修饰的方法或者变量不需要依赖于对象来进行访问,只要这个类被加载,Java 虚拟机就可以根据类名找到它们。 调用静态成员的语法形式如下: 类名 . 静态成员 注意 : static 修饰的成员变量和方法,从属于类。 普通变量和方法从属于对象。 静态方法不能调用非静态成员,编译会报错。 静态变量 类的成员变量可以分为以下两种: 1 . 静态变量(或称为类变量),指被 static 修饰的成员变量。 2 . 实例变量,指没有被 static 修饰的成员变量。 静态变量与实例变量的区别如下: 1 静态变量 运行时,Java 虚拟机只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存分配。 在类的内部,可以在任何方法内直接访问静态变量。 在其他类中,可以通过类名访问该类中的静态变量。 2 实例变量 每创建一个实例,Java 虚拟机就会为实例变量分配一次内存。 在类的内部,可以在非静态方法中直接访问实例变量。 在本类的静态方法或其他类中则需要通过类的实例对象进行访问。 静态变量在类中的作用如下: 1 . 静态变量可以被类的所有实例共享

指针与字符串实例练习

老子叫甜甜 提交于 2020-03-08 20:03:22
在C语言中,字符串是存放在字符数组中的,字符串的引用如下: char string[] ="I love China!";//定义字符数组string printf("%s\n",string);//输出整个字符串 printf("%c\n",string[7]);//输出第七个元素 该字符串长度是14,最后一个字节存放字符串结束符'\0'。 例1:通过字符指针变量输出一个字符串。 1 int main() 2 { 3 char *string="I love China!"; 4 printf("%s\n",string); 5 return 0; 6 } 定义一个char*变量,即字符型指针变量string,用字符串常量"I love China!"初始化,把字符串的第一个元素的地址赋给指针变量string,使string指向字符串的第一个字符。 %s使输出字符串格式符,系统会输出string指向的第一个字符,然后自动使string+1,指向下一个字符,直到'\0'为止。 例2:将字符串a复制为字符串b,然后输出字符串b。 1 int main() 2 { 3 char a[]="I am student.",b[20],*p1,*p2; 4 p1=a;p2=b;//指向数组中第一个元素 5 for(;*p1!='\0';p1++,p2++) 6 *p2=*p1; 7 *p2=

DAY2-Python学习笔记

て烟熏妆下的殇ゞ 提交于 2020-03-08 03:36:35
1.迭代器: 可以直接作用于 for 循环的对象 统称 为 可迭代对象 : Iterable ,使用 isinstance() 判断一个对象是否是 Iterable 对象: >>> from collections import Iterable >>> isinstance([], Iterable) True >>> isinstance({}, Iterable) True >>> isinstance('abc', Iterable) True >>> isinstance((x for x in range(10)), Iterable) True >>> isinstance(100, Iterable) False 可以被 next() 函数调用并 不断返回 下一个值的对象称为 迭代器 : Iterator ,使用 isinstance() 判断一个对象是否是 Iterator 对象: >>> from collections import Iterator >>> isinstance((x for x in range(10)), Iterator) True >>> isinstance([], Iterator) False >>> isinstance({}, Iterator) False >>> isinstance('abc', Iterator)

Java语言程序设计-第10版notes

半城伤御伤魂 提交于 2020-03-07 16:59:59
第1章 计算机、程序和Java概述 部分章节小结 1、编程错误可以分为三类:语法错误、运行时错误和逻辑错误。编译器报告的错误称为语法错误或者编译错误;运行时错误指引起程序非正常结束的错误;而当一个程序没有按照预期的方式执行时,产生逻辑错误 。 第2章 基本程序设计 部分章节小结 1、拓宽类型不需要显式转换,缩窄类型必须显式完成。 123456 int i=9;double d=i;//缩窄类型转换double d=9.0;int i=(int)d; 2、计算机科学中,1970年1月1日午夜零点为UNIX时间戳。 第3章 选择 部分章节小结 1、除开赋值操作符的所有二元操作符都是左结合的,赋值操作符是右结合的。(此处的结合指的是结合律) 123456 //以下两个表达等价a-b+c-d((a-b)+c)-d//以下两个表达等价a=b+=c=5a=(b+=(c=5)) 第4章 数学函数、字符和字符串 部分章节小结 1、字符 ‘ ‘ 、t、 f、 r 和 n 都称为空白字符。 2、字符可以基于它们的Unicode码使用关系操作符进行比较。 第6章 方法 部分章节小结 1、程序模块化和可重用性是软件工程的中心目标之一。 2、方法可以重载,这意味着两个方法可以拥有相同的方法名,只要它们的参数列表不同即可。 3、方法抽象是把方法的应用和实现分离,用户可以在不知道方法是如何实现的情况下使用方法

成员变量、局部变量、实例变量、静态变量、类变量、常量

一个人想着一个人 提交于 2020-03-06 03:48:06
成员变量: 直接在类中声明的变量叫成员变量(又称全局变量) ▲ 初始化: 如果未对成员变量设置初始值,则系统会根据成员变量的类型自动分配初始值:int分配初始值0、boolean分配初始值false,而自定义类型则分配初始值null ▲作用范围: 成员变量定义后,其作用域是其所在的整个类。且成员变量的定义没有先后顺序,但是最好将成员变量的定义集中在类的顶部。 public class Field { static int v ; //定义int类型数据 static double w ; //定义double类型数据 static char x ; //定义char类型数据 static boolean y ; //定义boolean类型数据 static String z ; //定义String类型数据 public static void main ( String [ ] args ) { System . out . println ( v ) ; //输出0 System . out . println ( w ) ; //输出0.0 System . out . println ( x ) ; //输出空,实质上此时x的值为0 System . out . println ( y ) ; //输出false System . out . println ( z ) ;

Java的运行原理

允我心安 提交于 2020-03-05 03:20:16
在 Java 中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在 Java 中,这种供虚拟机理解的代码叫做 字节码 (ByteCode)(class文件的内容) ,它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。 Java 源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。 跨平台: 话说,在北京,一般都是讲北京话的,上海,一般都是将上海话,广东,广东话... 现有一公文发出,要全国执行,该当如何?——先统一翻译成普通话。各地在将普通话版本翻译成当地的方言。 这里,北京、上海就是不同类型的机器windows,linux... 编译(javac)就是将公文翻译成普通话的过程,而编译出的.class文件,就是公文的普通话版本。 在执行的时候,各地的翻译就是jvm,负责将.class转换成本地能够理解的方言来执行。 *.jav a→ *.class →机器码 java 编译器 ( 编译 ) → 虚拟机 ( 解释执行 ) → 解释器 ( 翻译 ) →