java基础,没事常看看(一)类、对象、引用
- 什么是对象,什么是类?
类:是一个抽象的概念,表示的是一类事物所拥有的共性(属性、方法)。
对象:是类的具体(实例),对象不仅拥有类的属性和方法(private除外),还有自己专属的属性与方法。
比如:人是一个类,
那么对象就可以有男人,女人,学生,老板等等。
这里类是女朋友
package javaBasis1;//听说你缺女票,new一个吧
public class girlfriend{//这三个是成员变量int age;//年龄属性 int height; //身高属性int weight;//体重属性public girlfriend(String name) {name="翠花";System.out.println("名字什么的才不可能是"+name+"呢");}//女生的化妆行为public void make_up() {//这个是局部变量int time;//化妆时间???System.out.println("没人能碰我的妆,哪怕是我自己!");}public void showgirlfriend(int age,int height,int weight) {System.out.println("My girlfriend:");System.out.println("年龄:"+age);System.out.println("身高:"+height);System.out.println("体重:"+weight);}public static void main(String[] args) {girlfriend one=new girlfriend(null);//‘=’的左边叫做声明对象,右边叫做实例化对象//当对象被实例化后,会调用构造函数初始化对象。(null)表示调用自定义的那个构造函数。one.age=18;one.height=166;one.weight=99;one.showgirlfriend(one.age, one.height, one.weight);}
}
执行结果:
名字什么的才不可能是翠花呢
My girlfriend:
年龄:18
身高:166
体重:99
一个类可以包含成员变量、类变量和局部变量:
成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。
局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
每个类都有构造方法,如果你自己没有写构造方法的话,java编译器会为该类提供一个默认的构造方法。构造方法与类同名,自己写的可以包含参数,默认的构造方法是无参的。
什么是对象的引用?
以1中的程序为列girlfriend one=new girlfriend(null);
这里面new girlfriend
表示以girlfriend为模板,在堆空间中创建一个girlfriend类。
而girlfriend one
表示声明一个girlfriend类型的引用对象one
,这里的‘=’的意思就是使对象引用one
指向创建(new的)的对象girlfriend。
对对象和引用的总结:
- 一个对象引用可以指向0个或者1个对象
即girlfriend one=new girlfriend(null);
(指向一个对象)
girlfriend two;
(指向0个对象) - 一个对象可以被多个对象引用指向
即girlfriend one=new girlfriend(null);
girlfriend two=one;
girlfriend three=one;
- Java对象和引用的关系可以说是互相关联,却又彼此独立。彼此独立主要表现在:引用是可以改变的,它可以指向别的对象。
- 从存储空间上来说,对象和引用也是独立的,它们存储在不同的地方,对象一般存储在堆中,而引用存储在速度更快的堆栈中。
- 参数传递。Java只有一种参数传递方式:那就是按值传递,即Java中传递任何东西都是传值。如果传入方法的是基本类型的东西,你就得到此基本类型的一份拷贝。如果是传递引用,就得到引用的拷贝。
例如:
package javaBasis1;public class 引用demo {//传递引用public void demo1(StringBuffer s) {s.append(" world");}public void demo2(StringBuffer s) {s=new StringBuffer(" agin");}//传递基本类型public void demo3(int num) {num=100;}public static void main(String[] args) {引用demo demo=new 引用demo();StringBuffer s=new StringBuffer("hello");demo.demo1(s);System.out.println(s);demo.demo2(s);System.out.println(s);//基本类型demoint num=1;demo.demo3(num);System.out.println(num);}}
运行结果:
hello world
hello world
1
java基础,没事常看看(一)类、对象、引用相关推荐
- Java基础语法(七)——类和对象
文章目录 Java基础语法(七)--类和对象 一.类和对象的初步认识 二. 类和类的实例化 1.类的定义 2.实例化对象 3.如何使用类中的数据 三. 类的成员 1. 字段/属性/成员变量 (1)实例 ...
- Java基础学习——第十章 枚举类注解
Java基础学习--第十章 枚举类&注解 一.枚举类(enum) 1. 枚举类的概念 枚举类:类的对象只有有限个,确定的 线程状态:创建.就绪.运行.阻塞.死亡 当需要定义一组常量时,强烈建议 ...
- employee.java,Java基础系列(六):对象与类(上)
概述 类(class)是构造对象的模板.由类构造对象的过程称为创建类的实例. 封装从形式上看,封装是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式.对象中的数据称为实例域,而操纵数据 ...
- Java基础教程(12)--深入理解类
一.方法的返回值 当我们在程序中调用方法时,虚拟机将会跳转到对应的方法中去执行.当以下几种情况发生时,虚拟机将会回到调用方法的语句并继续向下执行: 执行完方法中所有的语句: 遇到return语句: ...
- Java基础——数组应用之StringBuilder类和StringBuffer类
接上文:Java基础--数组应用之字符串String类 一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和 ...
- java基础--IO流之File类
一.File类概述 用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作,File对象可以作为参数传递给流的构造函数 二.File类常见方法: 1,创建 boolean createN ...
- Java基础巩固(一)类,接口,枚举,常用API,集合,泛型,正则,数据结构
一.static.final.权限关键字,代码块,接口,枚举 1 关键字 2 代码块 3 接口 4 枚举 idea快捷键 shift + enter 换行 ctrl + Alt + shift + U ...
- Java基础之一组有用的类——生成日期和时间(TryDateFormats)
控制台程序. java.util包中含有相当多的类涉及日期和时间,包括Date类.Calendar类和GregorianCalendar类. Date类对象其实定义了精确到毫秒的时刻,从1970年1月 ...
- Java基础知识学习04-自定义类、ArrayList集合
类与对象 类是一个模子,确定对象将会拥有的特征(属性)和行为(方法). 类的特征:类是对象的类型 具有相同属性和方法的一组对象的集合 类的组成:属性和方法 定义一个类:public class 类名 ...
- Java大数据学习第六天------面向对象 类 对象 封装
面向过程: 强调的是过程, 面向对象: 强调的是结果,只需要关注结果就好. 面向对象的三大特征: 封装: 把相关的数据封装成一个"类"组件 继承: 是子类自动共享父类属性和 ...
最新文章
- 遍历百万级Redis的键值的大结局
- python应用:最长无重复字串提取
- php如何去除侧栏,设置内容区侧栏
- Java 堆内存优化
- GPU Gems1 - 2 水刻蚀的渲染
- 用户体验岗如何说服其他部门_为什么我们应该说服用户更新他们的浏览器-这是双赢的。...
- python 安装pandas 权限不够_详解Python学习之安装pandas
- (王道408考研数据结构)第二章线性表-第二节2:顺序表的操作
- 数字滤波器(二)--最小相位延时系统和全通系统
- 表格存储如何实现跨区域的容灾
- bzoj 1556 墓地秘密 —— 状压DP
- ubuntu 运行级别initlevel
- UIScrollView 和 UICollectionView 分页效果
- 二进制 八进制 十进制 十六进制 相互转化法
- 在线一元二次方程式计算器 源码
- 开源·共享·创新|2020年中国.NET开发者大会圆满收官!
- 手机共享电脑的proxy网络
- docker安装包安装
- winSocket第一步WSAStartup
- 数组去重newset
热门文章
- Windows7_x64下编译64位ffmpeg
- 人人都是产品经理 2
- day13 Java学习(常见对象正则表达式)
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:让按钮看起来像个链接 (仍然保留按钮行为)...
- 函数-生成器之斐波拉契数列
- .NET Core 最小化发布
- LVM使用手册简化命令
- ZeroMQ接口函数之 :zmq_msg_init_data - 从一个指定的存储空间中初始化一个ZMQ消息对象的数据...
- 简单-三层-存储过程-增删改四
- 2、掌握C++基本语法