1、概述

      1.1  

          1.1.1  类   是一种  自定义的  引用  数据类型;

      1.2  对象

          1.2.1  创建对象的根本途径:构造器;  通过new关键字   来调用  某个类的构造器;

package com.an.faceobject;

public class Person {

    String name;
Integer age; public Person(){ } public Person(String name,Integer age){
this.name=name;
this.age=age;
} Person p=new Person("jack",12); }

          Person p=new Person("jack",12);  

              p存储在   栈内存中,存储着Person对象在内存存储的地址值;

              Person对象存储在   堆内存中;

           

          【注意】:多个引用变量  可以指向同一个对象;

package com.an.faceobject;

public class Person {

    String name;
Integer age; public Person(){ } public Person(String name,Integer age){
this.name=name;
this.age=age;
} Person p=new Person("jack",12); //p1,p2均指向同一个Person对象
Person p1=p;
Person p2=p; }

           【注意】:当一个对象不被任何引用变量引用时,java的垃圾回收机制将会将其内存回收;

                  可以显式将Person p=null; Person p1=null;  Person p1=null;    切断对象与引用变量的关系;

      1.3  成员变量

           1.3.1  定义在  类  范围内的、无需显式初始化; 

           1.3.2  包括  类变量(static修饰) 、对象变量;

           1.3.3  只要  类存在,程序就可以访问该类的变量(类.属性);

      1.4  局部变量

           1.4.1  定义在  方法  内的、必须显式初始化;

           1.4.2  只要对象 存在,程序就可以访问该对象的变量(对象.属性);

           1.4.3  对象  也可以直接访问类属性(对象.类属性);

                   但是  一旦对类属性值进行修改,则类属性值将会改变,其他对象访问均是改变后的值;

package com.an.faceobject;

public class Person {

    String name;
Integer age;
static String sex="man"; public Person(){ } public Person(String name,Integer age){
this.name=name;
this.age=age;
} public static void test(){
Person p=new Person("jack",12);
p.sex="female";
} public static void main(String[] args){
System.out.println("pre:"+sex);
test();
System.out.println("after:"+sex);
} } 结果:
pre:man
after:female

          1.4.4  局部变量根据定义形式的不同,分为:

                  a,方法形参

                    方法声明时定义;

                    方法内有效;

                    无需显式初始化,在调用时由系统完成;

                  b,方法局部变量

                    方法体内定义;

                    方法内有效;

                    必须显式初始化;

                  c,代码块局部变量

                    代码块中定义;

                    代码块内有效;

           1.4.5  java中允许成员变量与局部变量同名,但是局部变量值会覆盖掉成员变量值,如果要使用成员变量值,可以使用对象.属性(类.类属性) ;  

              

package com.an.faceobject;

public class Person {

    String name="jack";

    public static void main(String[] args){
String name="rose";
System.out.println(name);
System.out.println(new Person().name);
} } 结果:
rose
jack

      1.5  静态成员与非静态成员调用:

            静态方法   中可以直接调用同类中静态成员;

            静态方法   中如果想  调用非静态成员,需要创建对象,由对象调用;

            非静态方法  中可以直接访问静态变量、非静态变量:

  

package com.an.faceobject;

public class Person {

    String name;
Integer age;
static String sex="man"; public void test1(){
//普通方法中直接调用静态变量、非静态变量
sex="";
name="";
} public static void test(){
Person p=new Person();
//静态方法中可以由对象来调用非静态方法
p.test1();
} }

  

    

JavaSE---类、对象、成员变量、局部变量的更多相关文章

  1. 【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法

    . 一. 类定义 类定义需要实现两部分 : -- 接口部分 : 定义类的成员变量和方法, 方法是抽象的, 在头文件中定义; -- 实现部分 : 引入接口部分的头文件, 实现抽象方法; 1. 接口部分定 ...

  2. 派生类地址比基类地址少4(CDerived对象的起始地址存放的是虚表指针vptr,也就是子类的第一项内容。接下来的是基类的成员变量,接下来再是自身的成员变量)

    大家对虚表并不陌生,都知道每个含有虚函数的类对象都有1个虚指针,但是在现实使用中,却总是因为这而调试半天,才发现原来是虚指针惹的祸.我这几天在调试代码时候也中招了,我的问题是这样的,如下图,CTree ...

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

    JavaSE 面试题 成员变量与局部变量 public class Test { static int s; int i; int j; { int i = 1; i++; j++; s++; } p ...

  4. python中的类的成员变量以及property函数

    1 python类的各种变量 1.1 全局变量 在类外定义的变量. 1.2 类变量 定义在类里面,所有的函数外面的变量.这个变量只有一份,是所有的对象共有的.在类外用“类.”来引用. 1.3 实例变量 ...

  5. fielderror里的fieldName代表的是jsp里的fieldName还是Action类的成员变量?(待解答)

    1.值栈的Action对象中会有一个fielderror属性,代表着字段错误. fielderror是Map<String,List<String>>类型 例如下面的值栈里可看 ...

  6. 成员变量&&局部变量

    一.相同点:1.都遵循变量的声明格式:(修饰符) 数据类型  变量名=初始化值 2.都有各自的作用域 二.不同点:1.声明的位置不同      成员变量:声明在类内,方法外. 局部变量:声明在方法内. ...

  7. C++类中成员变量的初始化总结(转帖)

    本文转自:C++类中成员变量的初始化总结 1. 普通的变量:      一般不考虑啥效率的情况下 可以在构造函数中进行赋值.考虑一下效率的可以再构造函数的初始化列表中进行.  1 class CA  ...

  8. [C++] 类的成员变量和成员方法

    类具有成员变量和成员方法 成员变量用来描述某个对象的具体特征,是静态的,也称为成员属性,这些属性一般设置为私有,仅供类的内部使用. 成员方法用来描述某个对象的具体行为,是动态的,也成为成员函数,这些属 ...

  9. Java采用反射技术创建对象后对目标类的成员变量和成员方法进行访问

    实现: package com.ljy; import java.lang.reflect.Field; import java.lang.reflect.Method; /** * * @Class ...

  10. 深入理解PHP内核(十四)类的成员变量及方法

    原文链接:http://www.orlion.ga/1237/ 类的成员变量在PHP中本质是一个变量,只是这些变量都归属于某个类,并且给这些变量是有访问控制的. 类的成员方法在PHP中本质是一个函数, ...

随机推荐

  1. hive基础知识or基本操作命令

    MySQL的密码是:123456 1.hive创建标准表(以后均可以按照这样创建): create [external] table [if not exists] records (year STR ...

  2. JAVA学习笔记--赋值(“=”)

    参考来源:<java编程思想(第四版)> 见第三章3.4节 基本数据类型存储了实际的数值,并非指向一个对象的引用,故其赋值,就是直接将一个地方的内容复制到了另一个地方.例如,对基本数据类型 ...

  3. 一分钟小知识:scroll-behavior 让你的页面导航滚动更丝滑~

    中午在[掘金]潜水摸鱼,看到这一个沸点,个人已经撸出特效: 下面放上  作者 的 掘金 地址  #掘金沸点# https://juejin.im/pin/5d649eaaf265da19752533d ...

  4. 攻防世界 WEB篇

    0x01 ics-06 查看源码发现:index.php 一开始直接用sqlmap跑了下没有发现注入,然后用brupsuite爆破参数 0x02 NewsCenter SQL注入中的POST注入,查阅 ...

  5. 2019 牛客暑期多校 第二场 H Second Large Rectangle (单调栈)

    题目:https://ac.nowcoder.com/acm/contest/882/H 题意:一个大的01矩阵,然后现在要求第二大的全一矩阵是多少 思路:在这里我们首先学习一下另一个东西,怎么求直方 ...

  6. HTTP返回码中200,302,304,404,500得意思

    状态码的职责是当客户端向服务器端发送请求时,描述返回请求结果.借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了什么错误. 2开头的,响应成功,客户端请求服务器正常响应处理了. 3开头的,响 ...

  7. 高并发大流量专题---10、MySQL数据库层的优化

    高并发大流量专题---10.MySQL数据库层的优化 一.总结 一句话总结: mysql先考虑做分布式缓存,过了缓存后就做mysql数据库层面的优化 1.mysql数据库层的优化的前面一层是什么? 数 ...

  8. iphone-命令行编译之--xcodebuild

    参考 : https://www.cnblogs.com/xiaodao/archive/2012/03/01/2375609.html

  9. getAttribute 与getParmeter 区别

    1.getAttribute是取得jsp中 用setAttribute設定的attribute 2.parameter得到的是string:attribute得到的是object 3.request. ...

  10. 用其他音乐源帮帮网易云,Android听歌利器

    镜像文章 1.用其他音乐源帮帮网易云,Ubuntu听歌利器 2.用其他音乐源帮帮网易云,Windows听歌利器 1.TaiChi模块简介 TaiChi(太极)是一款免解锁,免root,就能够运行 Xp ...