如题,在看String源码的某个函数时,发现了这个操作是被允许的,而且可以直接改变private字段(不是final按理是可以改变),这与之前的理解有点相背. 接下来试图整理下Google来的结论: Java: Why can I access private fields of other objects? 抽象点的观点: 因为访问修饰符在类级别而不是在对象级别上工作. 比较有说服力的观点: 诸如equals,clone和复制构造函数之类的一些方法在不放弃封装的情况下编写起来会很棘手. 其它文…
没事写了一个简单的面向对象验证码类,可以直接使用(替换一下字体路径) <?php class authCode { private static $instance = null; #实例对象 private $width = 120; #图片宽度 private $height = 40; #图片高度 private $font = 'font/elephant.ttf'; #字体文件路径 private $fontSize = 14; #字体大小 private $strLen = 6; #…
创建:createNewFile()在指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回false. createTempFile(String prefix, String suffix, File directory)   在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称.mkdir()  在指定位置创建一个单级文件夹.mkdirs()  在指定位置创建一个多级文件夹.renameTo(File dest)如果目标文件与源文件是在同一个路径下,那么r…
1,面向对象程序设计的三大基本特征:继承(Inheritence).封装(Encapsulation).多态(Polymorphism)     2,如何定义类?            修饰符 class 类的名字  {           //类的内容(包含属性与方法)           }   比如:        public class Car{                    }  3,如何定义方法?            修饰符 返回类型 方法名称([参数1, 参数2, 参数…
构造器里面调用其它构造器,格式方法如下:1.使用this调用另一个重载构造器,只能在构造器中使用:2.必须写在构造器执行体的第一行语句: 示例如下: import static java.lang.System.*; //-导入java.lang.System下全部的静态成员变量--减少代码书写量 public class Constructor{ //-定义4个实例变量 public String name; public String color; public double weight;…
对象的方法中一旦加入synchronized修饰,则任何时刻只能有一个线程访问synchronized修饰的方法.假设有个数据对象拥有写方法与读方法,多线程环境中要想保证数据的安全,需对该对象的读写方法都要加入 synchronized同步块.这样任何线程在写入时,其它线程无法读取与改变数据:如果有线程在读取时,其他线程也无法读取或写入.这种方式在写入操作远大于读操作时,问题不大,而当读取远远大于写入时,会造成性能瓶颈,因为此种情况下读取操作是可以同时进行的,而加锁操作限制了数据的并发读取. R…
1.九大内置对象: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page isErrorPage="true" %><!-- 默认是隐藏的false --> <%@ page session="true" %><!-- session默认是显示的true…
这段时间我们在做一个英语翻译软件的小小小APP,涉及到了对Json数据的解析,所以特地来总结一下! 假设我们要对如下数据进行解析,其实在平时,返回的Json数据是很乱的,很难分清数据的关系,这是经过相关工具美化后的结果 {  "translation": [    "爱"  ],  "basic": {    "us-phonetic": "lʌv",    "phonetic": &q…
对于类A.B,A是B的基类,A有一个私有成员name A.java public class A { private String name = "A"; public void print() { System.out.println(name); } } B.java public class B extends A { } 对于A对象a,要想改变a的name,可以这样操作: try { Field nameFieldInA = a.getClass().getDeclaredFi…
String类的签名(JDK 8): public final class String implements java.io.Serializable, Comparable<String>, CharSequence { } String是不可变类,即String对象也是不可变对象. 这意味着当修改一个String对象的内容时,JVM不会改变原来的对象,而是生成一个新的String对象. 一.CharSequence 接口 CharSequence API 解释,CharSequence的…
类对象.类属性与实例对象.实例属性的区别 在Python中一切皆是对象,类是一个特殊的对象即类对象,描述类的属性称为类属性.类属性在内存中只有一份,在__init__外部定义. 通过类创建的对象称为实例对象,描述实例对象的属性称为实例属性.实例属性在各自对象的内存中都保存一份,在__init__方法内部定义. 实例方法.类方法.静态方法的区别 这三种方法都是保存在类的内存中,调用者不同. 实例方法由对象调用,至少一个self参数,self代表对象的引用. 类方法有类调用,至少一个cls参数,并且…
Class类(在java.lang包中,Instances of the class Classrepresent classes and interfaces in a running Javaapplication):   在Java中,每个class都有一个相应的Class对象.也就是说,当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息   获取Class实例的三种方式:     (1)利用对象调用getClass()方法获取该…
深入理解Class对象 RRIT及Class对象的概念 RRIT(Run-Time Type Identification)运行时类型识别.在<Thinking in Java>一书第十四章中有提到,它的功能是在运行时识别对象的类型和类信息.有两种主要方式:“传统的”RTTI(它假定我们在编译时已经知道所有类型)和“反射”机制(它允许我们在运行时发现和使用类信息). 类是程序的一部分,每个类都有一个类对象.换句话说,无论何时编写和编译新类,都会生成一个Class对象(更恰当地说,保存在相同名称…
1.什么是类对象,实例对象 类对象:类名 实例对象:类创建的对象 2.类属性就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本,这个和C++.Java中类的静态成员变量有点类似.对于公有的类属性,在类外可以通过类对象和实例对象访问 类属性 # 类属性 class people: name="Tom"    #公有的类属性 __age=18      #私有的类属性 p=people() print(p.name)   #实例对象 print(people.n…
RTTI (Run-Time Type Information)运行时类信息 Java的Class类是java反射机制的基础,通过Class类我们可以获得关于一个类的相关信息,下面我们来了解一下有关java中Class类的相关知识! 首先,Class是一个java类,跟JavaAPI中定义的诸如Thread.Integer类.我们自己定义的类是一样,也继承了Object(Class是Object的直接子类).总之,必须明确一点,它其实只是个类,只不过名字比较特殊.更进一步说,Class是一个ja…
代理(proxy) 利用代理可以在运行时创建一个实现了一组给定接口的新类.这种功能只有在编译时无法确定需要实现哪个接口时才有必要使用. 何时使用代理 假设有一个表示接口的Class对象(有可能只包含一个接口),它的确切类型在编译时无法知道.要想构造一个实现这些接口的类,就需要使用newInstance方法或反射找出这个类的构造器.但是,不能实例化一个接口,需要在程序处于运行状态时定义一个新类. 代理类可以在运行时创建全新的类.这样的代理类能够实现指定的接口.尤其是,它具有下列方法: 指定接口所需…
对java实体类的众多理解: A .就是属性类,通常定义在model层里面 B. 一般的实体类对应一个数据表,其中的属性对应数据表中的字段. 好处: 1.对对象实体的封装,体现OO思想. 2.属性可以对字段定义和状态进行判断和过滤 3.把相关信息用一个实体类封装后,我们在程序中可以把实体类作为参数传递,更加方便. C. 说白了就是为了让程序员在对数据库操作的时候不用写SQL语句 D. 就是一个数据库表生成一个类 这样做对数据库操作起来方便 编写代码较少 提高效率 可以使程序员专注逻辑关系 E. …
测试代码: #encoding:utf-8 class Parent(object): x=1 #x是Parent类的属性(字段) ls=[1,2] #ls是一个列表,也是Parent类的属性(字段) class Child1(Parent): y=2 class Child2(Parent): pass if __name__=='__main__': '''对于类属性:子类与父类的关系是,如果子类重写了继承的值就用子类自己的属性值,否则就用父类的属性值''' print Parent.x,C…
私有成员变量的概念,在脑海中的现象是,以private关键字声明,是类的实现部分,不对外公开,不能在对象外部访问对象的私有成员变量. 然而,在实现拷贝构造函数和赋值符函数时,在函数里利用对象直接访问了私有成员变量,因而,产生了困惑.下面以具体实例进行说明: 疑惑:为什么第26行和第32行代码可以编译通过,而第39行和第40行代码会产生编译错误? class CTest { public: CTest(int i); CTest(const CTest& rhs); CTest& opera…
1.类属性与实例属性 类属性就相当与全局变量,实例对象共有的属性,实例对象的属性为实例对象自己私有. 类属性就是类对象(Tool)所拥有的属性,它被所有类对象的实例对象(实例方法)所共有,在内存中只存在一个副本,这个和C++中类的静态成员变量有点类似.对于公有的类属性,在类外可以通过类对象和实例对象访问. 2.实例:类属性 class People(object): name = 'Jack' #类属性(公有) __age = 12 #类属性(私有) p = People() #创建实例对象 p…
Java对象初始化详解 2013/04/10 · 开发 · 1 评论· java 分享到:43 与<YII框架>不得不说的故事—扩展篇 sass进阶篇 Spring事务管理 Android-屏幕适配全攻略 来源:MySun 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.本文试图对Java如何执行对象的初始化做一个详细深入地介绍(与对象初始化相同,类在被加载之后也是需要初始化的,本文在最后也会对类的初始化进行介绍,相对于对象初始化来说,类的初始化要相对简…
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. if(request instanceof HttpServletRequest){ System.out.println("-------------"); }…
觉得还不错 留个记录,转载自http://zhh9106.iteye.com/blog/2151791 在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法. 因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识. java的内置锁:每个java对象都可以用做一个实现同步的锁,这些锁成为内置锁.线程进入同步代码块或方法的时候会自动获得该锁,在退出同步代码块或方法时会释放该锁.获得内置锁的唯一途径就是进入这个锁的…
java反射机制认知 java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取类的信息以及动态调用对象的方法的功能称为java语言的反射机制Reflection. 这就说明:Java程序可以加载一个编译期间完全未知的class,获悉其完整构造,并生成其对象实体.或对其fields设值.或唤起其methods.虽然java并不是动态语言. 如何达到上述目的,是本文探讨的内容.本文将介绍Reflection A…
4.3 用户自定义类 4.3.1 类数组的声明 需要两次new Employee[]=staff=new Employedd[3]; staff[0]=new Employedd(参数列表); staff[1]=new Employedd(参数列表); staff[2]=new Employedd(参数列表); 4.3.2 封装的注意 不要直接一个retrun一个类,应该先clone public Date getHireDay() { return hireDay; //这是错误的,只是浅复制…
java类与对象学习笔记 一.成员变量和局部变量 (1)定义 1.成员变量 在类中定义,用来描述对象将要有什么.(默认的成员变量值为0) 2.局部变量 在类的方法中定义,在方法中临时保存数据. 演示示例: (2)成员变量和局部变量的区别 1.作用域不同 局部变量的作用域仅限于定义它的方法:成员变量的作用域在整个类内部都是可见的. 2.初始值不同 java会给成员变量一个初始值(初始值为0):java不会给局部变量赋予初始值.(使用局部变量必须要先赋值) 示例: 3.同名的情况 在同一个方法中,不…
继承.实现.依赖.关联.聚合.组合的联系与区别 下面的内容很基础,同时也很简单,但是也很重要. 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系:在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性:  实现 指的是一个class类实现interface接口(可以是多个)的功能:实现是类与接口之间最常见的关系:在Java中此类关系通过关键字implements明确标…
前言 Java基础-类与对象,方法的重载,构造方法的重载,static关键字,main()方法,this关键字,包,访问权限,类的继承,继承性,方法的重写,super变量. 方法的重载:成员方法的重载和构造方法的重载 方法的重载 在一个类中可以有多个方法具有相同的名字,但是这些方法的参数个数不同,或参数类型不同,即为方法的重载. class Demo{ // one void dashu(String name){ System.out.println(name); } // two void…
构造方法 1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名) 2.每个类可以有一个以上的构造器 3.构造器可以有0个.1个或1个以上的参数 4.构造器没有返回值 5.构造器总是伴随着new操作一起调用 示例: A.java public class A{ public A(){ System.out.println("调用了无参的构造函数"); } public A(String mess){ System.out.println("调用了有参的构…
                                                                                                                                  java设计模式(1)       先简单的介绍下设计模式吧:是一种解决这个问题的一种行之有效的思想:用于解决特定环境下.反复出现的特定问题的解决方式.       那为什么我们须要学习设计模式呢?         1.设计模式都是一些相对…