成员变量

JavaSE 面试题: 成员变量与局部变量

别来无恙 提交于 2019-11-27 22:18:56
JavaSE 面试题 成员变量与局部变量 public class Test { static int s; int i; int j; { int i = 1; i++; j++; s++; } public void test(int j) { j++; i++; s++; } public static void main(String[] args) { Test t1 = new Test(); Test t2 = new Test(); t1.test(10); t1.test(20); t2.test(30); System.out.println(t1.i + ", " + t1.j + ", " + t1.s); System.out.println(t2.i + ", " + t2.j + ", " + t2.s); } } 参考答案 2, 1, 5 1, 1, 5 来源: https://www.cnblogs.com/hglibin/p/11380250.html

C++之指向对象成员函数的指针

一笑奈何 提交于 2019-11-27 20:55:52
1. 普通函数的指针变量定义 数据类型名 (*指针变量名)(参数列表); 例如:void (*p)( ); //p指向void型函数的指针变量; p = fun; //fun入口地址赋予p; (*p)( ); //调用fun函数; 2. 指向对象成员函数的指针变量[ 指向对象成员函数的指针变量 与普通函数的指针变量的根本区别:前者为类的成员] 指针变量类型与右侧函数匹配要求: 1)参数类型及个数相同; 2)返回类型相同; 3)所属的类相同。 定义:数据类型名 (类名::*指针变量名)(参数列表); 指针变量名 = &类名::成员函数名; 例如:void (Time::*p)( ); p = &Time::fun; (t1.*p)( ); 注:入口地址写为: &类名::成员函数名,而非&对象名.成员函数名(即t1.fun)。 原因:成员函数不是存放在对象的空间中,而是在对象外的空间,多个对象公用同一段函数代码,故赋给指针p的应 是公共函数代码段的入口地址。 成员函数存储方式 点击打开链接 来源: CSDN 作者: Lynn_lurk 链接: https://blog.csdn.net/CXHPLY/article/details/48489769

对象指针—指向对象成员的指针

戏子无情 提交于 2019-11-27 20:52:07
2013-02-21 来源: 中国站长 关键字: 对象指针 对象 成员 指针 对象有地址,存放对象初始地址的指针变量就是指向对象的指针变量。对象中的成员也有地址,存放对象成员地址的指针变量就是指向对象成员的指针变量。 1、指向对象数据成员的指针定义指向对象数据成员的指针变量的方法和定义指向普通变量的指针变量方法相同。例如 int *p1; //定义指向整型数据的指针变量 定义指向对象数据成员的指针变量的一般形式为数据类型名 *指针变量名;如果Time类的数据成员hour为公用的整型数据,则可以在类外通过指向对象数据成员的指针变量访问对象数据成员hour。 p1=&t1.hour;//将对象t1的数据成员hour的地址赋给p1,p1指向t1.hour cout<<*p1<<endl;//输出t1.hour的值 2、指向对象成员函数的指针需要提醒读者注意: 定义指向对象成员函数的指针变量的方法和定义指向普通函数的指针变量方法有所不同。 成员函数与普通函数有一个最根本的区别: 它是类中的一个成员。编译系统要求在上面的赋值语句中,指针变量的类型必须与赋值号右侧函数的类型相匹配,要求在以下3方面都要匹配: ①函数参数的类型和参数个数; ②函数返回值的类型; ③所属的类。 定义指向成员函数的指针变量应该采用下面的形式: void (Time::*p2)( );/

对象指针

余生颓废 提交于 2019-11-27 20:50:43
指向对象的指针 在C++中,建立对象时,编译系统会为每一个对象分配一定的存储空间,以存放其数据成员的值。一个对象存储空间的起始地址就是一个对象指针。可以定义一个指针变量,用来存放对象的地址,这就是指向对象的指针变量。 类名 * 对象指针 指向对象成员的指针 对象有地址,存放对象的起始地址的指针变量就是指向对象的指针变量。对象中的成员也有地址,存放对象成员地址的指针变量就是指向对象成员的指针变量。 指向对象的数据成员的指针 定义指向对象的数据成员的指针变量的方法和定义指向普通变量的指针变量的方法相同。 指向对象的成员函数的指针 定义指向对象成员函数的指针变量的方法和定义指向普通函数的指针变量方法有所不同。 指向普通函数的指针变量 void ( * p ) ( ) ; // p是指向void类型的指针变量 可以使p指向一个函数,并通过指针变量调用。 p = fun ; // 将fun函数的入口地址赋给指针变量p,p就指向了函数fun ( * p ) ( ) ; // 调用fun函数 指向对象成员函数的指针 因为成员函数是类中的成员,所以要指定所属的类型 数据类型名 ( 类名 : : * 指针变量名 ) ( 参数列表 ) ; void ( Time : : * p2 ) ( ) ; // 定义p2为指向Time类中公用成员函数的指针变量 p2 = & Time : : get_time

c++ 指向对象成员的指针

依然范特西╮ 提交于 2019-11-27 20:49:30
在c++中类是抽象的,没有实际内存,而对象是具体,是占有内存的,因此对象有地址,存放对象的起始地址的指针变量就是指向对象的指针变量。对象中的成员也是占有内存的,所以,存放对象成员的起始地址的指针变量就是指向对象成员的指针变量。 1.指向对象数据成员的指针 int *p1; //定义指向整形数据的变量 p1 = &t1.hour; //把hour的地址赋给p1 cout<<*p1<<endl; //输出t1.hour的值 前提,hour是time类的公共的整形数据,则可以在类外通过指向对象数据成员的指针变量访问对象数据成员hour; 2.指向对象成员函数的指针 定义指向公用成员函数的指针变量的一般形式为 数据类型名 (类名::*指针变量名)(参数列表); 当它指向成员函数时,只需把公用成员函数的入口地址赋给一个指向公用成员函数的指针变量。 指针变量名=&类名::成员函数名 举例,用不同方法输出时间的时,分,秒 #include <iostream> using namespace std; class time { public: time(int h,int m,int s):hour(h),minute(m),second(s) {} void show(); int hour,minute,second; }; void time::show() { cout<<hour<<"

基础之java知识

帅比萌擦擦* 提交于 2019-11-27 19:50:33
1.面向对象和面向过程的区别 面向过程 : 面向过程性能比面向对象高。 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发。但是, 面向过程没有面向对象易维护、易复用、易扩展。 面向对象 : 面向对象易维护、易复用、易扩展。 因为面向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是, 面向对象性能比面向过程低 。 2.java语言有哪些特点 面向对象(封装,基础,多态),平台无关性(java虚拟机实现平台无关性),可靠性,安全性等 3.java和c++的区别 都是面向对象的语言,都支持封装、继承和多态 Java 不提供指针来直接访问内存,程序内存更加安全 Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。 Java 有自动内存管理机制,不需要程序员手动释放无用内存 4.字符型常量和字符串常量的区别 形式上: 字符常量是单引号引起的一个字符; 字符串常量是双引号引起的若干个字符 含义上: 字符常量相当于一个整型值( ASCII 值),可以参加表达式运算; 字符串常量代表一个地址值(该字符串在内存中存放位置) 占内存大小 字符常量只占2个字节; 字符串常量占若干个字节(至少一个字符结束标志

构造方法与成员方法

巧了我就是萌 提交于 2019-11-27 19:14:13
在P5“反射概述”中,老师的例子提到了构造方法、成员方法,两者的区别如下: 构造方法 1.构造方法没有返回值,方法名和类名相同 2.在NEW一个类时,构造方法会被 自动 调用 3.构造方法的作用是做一些变量的初始化,或在创建这个类时必须调用的一些方法和运算 成员方法 1.成员方法实现对类中成员变量的操作和功能的实现 2.成员方法由类的实例(某个对象)进行调用 来源: https://www.cnblogs.com/Additcd/p/11373757.html

【变量/常量】

笑着哭i 提交于 2019-11-27 18:14:08
对变量及常量的总结 在类中声明的变量或常量叫属性,或者叫成员变量,如name、salary、count 在方法中声明的变量叫局部变量,或者临时变量。 属性可以使用四种权限修饰符修饰,局部变量不可以 属性可以使用static修饰,局部变量不可以 属性可以使用final修饰,局部变量也可以 属性的生命周期很长,随着类加载或者创建对象被初始化,直到没有对象引用才回收 局部变量生命周期很短,执行某个方法时临时被初始化,方法结束即被回收。 如果局部变量与属性重名,则遵守就近原则,可以使用this区分,后续学习 属性可以在整个类中使用,局部变量只在当前方法中使用 属性都有默认的初始化值,如引用类型都是null,整型是0等,局部变量不被自动初始化,必须手工初始化,如taskname手工指定为null才为null,而属性name默认就为null 成员变量和局部变量的区别(理解) 在类中的位置不同 – 成员变量:类中方法外 – 局部变量:方法定义中或者方法声明上 在内存中的位置不同 – 成员变量:在堆内存 – 局部变量:在栈内存 生命周期不同 – 成员变量:随着对象的创建而存在,随着对象的消失而消失 – 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 初始化值不同 – 成员变量:有默认值 – 局部变量:没有默认值,必须定义,赋值,然后才能使用 注意事项: 局部变量名称可以和成员变量名称一样

java 内部类详解

梦想的初衷 提交于 2019-11-27 18:08:29
说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟。下面是本文的目录大纲: 一.内部类基础 二.深入理解内部类 三.内部类的使用场景和好处 四.常见的与内部类相关的笔试面试题 一、内部类基础 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。 下面就先来了解一下这四种内部类的用法。 1、成员内部类 成员内部类是最普通的内部类,它的定义为位于另一个类的内部 ,形如下面的形式: class Circle { double radius = 0; public Circle(double radius) { this.radius = radius; } class Draw { //内部类 public void drawSahpe() { System.out.println("drawshape"); } } } 这样看起来,类Draw像是类Circle的一个成员,Circle称为外部类。 成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)。 class Circle { private

设计模式之原型模式

百般思念 提交于 2019-11-27 16:58:36
1.克隆羊问题 现在有一只羊 tom,姓名为: tom, 年龄为:1,颜色为:白色,请编写程序创建和 tom 羊 属性完全相同的 10只羊。 1.1 思路分析: 1.2 传统应用 Sheep.java public class Sheep { private String name; private int age; private String color; public Sheep(String name, int age, String color) { super(); this.name = name; this.age = age; this.color = color; } } Client.java public class Client { public static void main(String[] args) { //传统的方法 Sheep sheep = new Sheep("tom", 1, "白色"); Sheep sheep2 = new Sheep(sheep.getName(), sheep.getAge(), sheep.getColor()); Sheep sheep3 = new Sheep(sheep.getName(), sheep.getAge(), sheep.getColor()); Sheep sheep4 = new