实例变量

实例变量、静态变量、实例方法、静态方法

ε祈祈猫儿з 提交于 2020-02-25 19:53:20
***实例变量:***只有new对象时才会赋值,如果构造方法没有赋值,则赋系统默认值,储存在堆内存中; ***静态变量:***当类加载进jvm时就赋值,如果没有手动赋值,则赋系统默认值,并同时储存在方法区中与class文件关联; ***实例方法:***只有先new对象,通过对象才能调用执行; ***静态方法:***当类加载进jvm时就执行; **实例代码块:**只有在new对象时才执行,在构造方法前执行。 **静态代码块:**类加载进jvm同时执行。 public class Test { //实例代码块 { System . out . println ( "实例代码块执行" ) ; } //静态代码块 static { System . out . println ( "静态代码块执行" ) ; } public static void main ( String [ ] args ) { new Test ( ) ; } } 控制台输出结果: 静待代码块执行 实例代码块执行 **注意:**静态代码块按静态代码块执行顺序执行。实例代码块按实例代码块的顺序执行。 来源: CSDN 作者: qq_28870891 链接: https://blog.csdn.net/qq_28870891/article/details/104503044

Swift简单入门教程

こ雲淡風輕ζ 提交于 2020-02-25 13:00:42
编程语言教程中的第一个程序应该在屏幕上打印“Hello, world”。在 Swift 中,可以用一行代码实现:   println("hello, world") 如果你写过 C 或者 Objective-C 代码,那你应该很熟悉这种形式——在 Swift 中,这行代码就是一个完整的程序。你不需要为了输入输出或者字符串处理导入一个单独的库。全局作用域中的代码会被自动当做程序的入口点,所以你也不需要main函数。你同样不需要在每个语句结尾写上分号。 注意:为了获得最好的体验,在 Xcode 当中使用代码预览功能。代码预览功能可以让你编辑代码并实时看到运行结果。 简单值 使用let来声明常量,使用var来声明变量。一个常量的值在编译时并不需要获取,但是你只能为它赋值一次。也就是说你可以用常量来表示这样一个值:你只需要决定一次,但是需要使用很多次。 var myVariable = 42 myVariable = 50 let myConstant = 42 常量或者变量的类型必须和你赋给它们的值一样。然而,声明时类型是可选的,声明的同时赋值的话,编译器会自动推断类型。在上面的例子中,编译器推断出myVariable是一个整数(integer)因为它的初始值是整数。 如果初始值没有提供足够的信息(或者没有初始值),那你需要在变量后面声明类型,用冒号分割。 let

JAVA面试宝典-基础篇(二)

爱⌒轻易说出口 提交于 2020-02-25 11:09:01
11 、 "==" 和 equals 方法究竟有什么区别? (单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚) == 操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用 == 操作符。 如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如 Objet obj = new Object(); 变量 obj 是一个内存, new Object() 是另一个内存,此时,变量 obj 所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用 == 操作符进行比较。 equals 方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码: String a=new String("foo"); String b=new String("foo"); 两条 new 语句创建了两个对象,然后用 a,b 这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即 a 和 b

Java基础——对象和类

ⅰ亾dé卋堺 提交于 2020-02-24 23:05:25
  将包含main方法的类称为主类。   变量的作用域是指变量可以在程序中引用的范围。   实例变量和静态变量的作用域是整个类,无论变量是在哪里声明的。   局部变量的声明和使用都在一个方法的内部。   一个类的实例变量和静态变量称为类变量或数据域。在方法内部定义的变量成为局部变量。   局部变量的作用域从声明变量的地方开始,直到包含该变量的块结束为止。局部变量都必须在使用之前进行声明和赋值。(Java没有给局部变量赋默认值)   无论在何处声明,类变量的作用域都是整个类。类的变量和方法可以在类中以任意顺序出现。但当一个数据域是基于对另一个数据域的引用来进行初始化时则不是这样。在这种情况下,必须首先声明另一个数据域。   类变量只能声明一次,但是在同一个方法内不同的非嵌套块中,可以多次声明相同的变量名。   可以在一个方法的不同块里声明同名的局部变量,但是,不能在嵌套块中或同一个块中两次声明同一个局部变量。   如果一个局部变量和一个类变量具有相同的名字,那么局部变量优先,而同名的类变量将被隐藏。   可以把两个类放在同一个文件中,但是文件中只能有一个类是公共(public)类。此外,公共类必须与文件同名。源代码中的每个类编译成.class文件。   构造方法在使用new操作符创建对象的时候调用,它是一种特殊的方法,有以下三个特殊性:    (1)构造方法必须具备和所在类相同的名字

可见性、原子性和有序性问题

时光怂恿深爱的人放手 提交于 2020-02-24 10:45:34
可见性、原子性和有序性问题 并发编程背景 核心矛盾 这些年,我们的 CPU、内存、I/O 设备都在不断迭代,不断朝着更快的方向努力。但是,在这个快速发展的过程中,有一个 核心矛盾一直存在,就是这三者的速度差异 。 我形象的描述了一下这三者的速度上的差异:所谓天上一天地上一年(爱因斯坦的相对论是有合理解释的),CPU和内存之间的速度差异就是CPU天上一天,内存地上一年(假设 CPU 执行一条普通指令需要一天,那么 CPU 读写内存得等待一年的时间)。内存和I/O设备的速度差异就更大了,内存是天上一天,I/O设备是地上十年。 木桶原理 一只水桶能装多少水取决于它最短的那块木块 程序的大部分语句都要访问内存,有些还要访问I/O,根据木桶原理,程序整体的性能取决于最慢的操作,所以只是单方面的提高CPU的性能是无效的,才出现了一些提高CPU性能使用率的优化 如何提高CPU的性能? CPU增加了缓存,以均衡与内存的速度差异(计算机体系结构方面优化) 操作系统增加了进程、线程,以分时复用CPU,进而均衡CPU与I/O设备的速度差异(操作系统方面优化) 编译程序优化指令执行次序,使得缓存能够得到更加合理地利用(编译程序带来的优化) 很多时候人们总是会很开心享受眼前的好处,却总是忽略了一句话:采用一项技术的同时,一定会产生一个新的问题,并发程序很多的诡异问题的根源也从这里开始 可见性 单核时期

Python之面向对象编程

拜拜、爱过 提交于 2020-02-24 08:30:25
一、类的对象、实例化、变量 1.概念:类就是class,将一类事物放到一起,类里面包含这类事物的各种函数方法,相当于一个模型,例如造汽车,造汽车就是一个类,类里面包含造轮胎,造车门等函数方法。类的实例化就是通过这个类,这个模型造出来的实际的东西,例如通过造汽车这个模型造出来了一个汽车,这个汽车就是这个类的一个实例。在类里面有类变量,写在类里面,函数外面,通常就是类变量,在函数里面类似于self.name 这种就是实例变量。类的对象在代码层指的就是self,在函数里都会默认有个参数为self,类里面的函数都是面向这个self对象,函数里面的self.name 这种变量也是的,所以在一个类的函数里面,各个函数可以直接调用类里的其他函数的self.name 这种变量,或是self.函数名这个函数。其实在实例化的时候就是将那个实例传递给这个类里面的self,所以这个实例会拥有这个类里面的所有属性,或是方法。 2.例子: class Person: #类,类名都以大写字母开头,驼峰式取名 country = 'China' #类变量 def say(self): self.name = '张三' #实例变量 def cry(self): print('%s 哇哇哇'%self.name) #调用上一个函数里self.name self.say() #调用函数say()a=Person()

PHP 类与对象 全解析(三)

我怕爱的太早我们不能终老 提交于 2020-02-24 01:56:18
目录 PHP 类与对象 全解析( 一) PHP 类与对象 全解析( 二) PHP 类与对象 全解析(三 ) 13.魔术方法 定义:PHP把所有以__(两个下划线)开头的类方法当成魔术方法 __construct, __destruct (参看 构造方法和析构方法), __call, __callStatic, __get, __set, __isset, __unset (参看 重载), __sleep, __wakeup, __toString, __set_state 和 __clone 等方法在PHP中被称为“魔术方法”(Magic methods)。 你在命名自己的类方法时不能使用这些方法名。 serialize() 作用: 第一. 在序列化之前,关闭对象可能具有的任何数据库连接等. 第二. 指定对象中需要被序列化的成员属性,如果某个属性比较大而不需要储存下来,可以不把它写进__sleep要返回的数组中,这样该属性就不会被序列化 在用serialize序列化对象时,会自动调用__sleep方法,__sleep方法必须返回一个数组,包含需要串行化的属性。 PHP会抛弃其它属性的值, 如果没有__sleep方法,PHP将保存所有属性,包括private属性。 unserialize() 从字节流中创建了一个对象之后,马上检查是否具有__wakeup 的函数的存在。 如果存在,_

mysql变量(用户+系统)

荒凉一梦 提交于 2020-02-23 16:01:04
9.3. 用户变量 可以先在用户变量中保存值然后在以后引用它;这样可以将值从一个语句传递到另一个语句。用户变量与连接有关。也就是说,一个客户端定义的变量不能被其它客户端看到或使用。当客户端退出时,该客户端连接的所有变量将自动释放。 用户变量的形式为@var_name,其中变量名var_name可以由当前字符集的文字数字字符、‘.’、‘_’和‘$’组成。 默认字符集是cp1252 (Latin1)。可以用mysqld的-- default -character- set 选项更改字符集。参见5.10.1节,“数据和排序用字符集”。用户变量名对大小写不敏感。 设置用户变量的一个途径是执行SET语句: SET @var_name = expr [, @var_name = expr] ...对于SET,可以使用=或:=作为分配符。分配给每个变量的expr可以为整数、实数、字符串或者NULL值。 也可以用语句代替SET来为用户变量分配一个值。在这种情况下,分配符必须为:=而不能用=,因为在非SET语句中=被视为一个比较 操作符: mysql> SET @t1=0, @t2=0, @t3=0; mysql> SELECT @t1:= (@t2:=1)+@t3:=4,@t1,@t2,@t3;+----------------------+------+------+------+| @t1:=

华育兴业干货 | Web前端经典面试题及答案

a 夏天 提交于 2020-02-21 19:18:57
昨天,小骨头分享了关于Java的面试题,有学员反映需要前端方向的面试题,所以小骨头又来给大家分享干货了,本篇收录了一些面试前端岗位时,经常会遇到的经典面试题,通过对本篇知识的整理以及经验的总结,希望能帮到更多的前端面试者。 javascript 1、JavaScript中如何检测一个变量是一个String类型?请写出函数实现 方法1、 function isString(obj){ return typeof(obj) === "string"? true: false; // returntypeof obj === "string"? true: false; } 方法2、 function isString(obj){ return obj.constructor === String? true: false; } 方法3、 function isString(obj){ return Object.prototype.toString.call(obj) === "[object String]"?true:false; } 如: var isstring = isString('xiaoming'); console.log(isstring); // true 2、请用js去除字符串空格? 方法一:使用replace正则匹配的方法 去除所有空格: str = str

MVC<2:路由映射原理2>

笑着哭i 提交于 2020-02-21 15:13:05
(原文请参考 http://artech.cnblogs.com/ ) 总的来说,我们可以通过RouteTable的静态属性Routes得到一个基于应用的全局路由表,通过上面的介绍我们知道这是一个类型的RouteCollection的集合对象,我们可以通过调用它的MapPageRoute进行路由映射,即注册URL模板与某个物理文件的匹配关系。路由注册的核心就是在全局路由表中添加一个Route对象,该对象的绝大部分属性都可以通过MapPageRoute方法的相关参数来指定。接下来我们通过实现演示的方式来说明路由注册的一些细节问题。 目录 一、变量默认值 二、约束 三、对现成文件的路由 四、注册路由忽略地址 五、直接添加路由对象 我们已前面介绍的关于获取天气预报信息的路由地址,我们在创建的ASP.NET Web应用中创建一个Weather.aspx页面,不过我们并不打算在该页面中呈现任何天气信息,而是将基于该页面的路由信息打印出来。该页面主体部分的HTML如下所示,我们不仅将基于当前页面的RouteData对象的Route和RouteHandler属性类型输出来,还将存储于Values和DataTokens字典的变量显示出来。 1: <body> 2: <form id="form1" runat="server"> 3: <div> 4: <table> 5: <tr> 6: <td