Java编程思想学习(一) 一切都是对象

前言

Java是基于C++的,但Java是一种更加纯粹的面向对象程序设计语言。

C++和Java都是混合/杂合型语言。杂合型语言允许多种编程风格。

用引用操纵对象

每种编程语言都有自己操纵内存中元素的方式。

  • 直接操纵元素
  • 用某种基于特殊语法的间接表示(C和C++里的指针)
  • 用引用操纵对象(Java)

在Java中,一切都被视为对象。操纵的标识符实际上是对象的一个引用

  • 类比为遥控器(引用)来操纵电视机(对象)
  • 只要把握这个遥控器,就能保持与电视机的连接
  • 改变频道或减小音量,实际操纵的是遥控器(引用),再由遥控器来调控电视机(对象)
  • 在房间四处走走,只要携带遥控器(引用)而不是电视机(对象)就能调控电视机
  • 即使没有电视机,遥控器也可以独立存在
1      //创建的只是引用而不是对象
2         String s1;
3         //创建一个引用的同时便进行初始化
4         //Java语言的特性:字符串可以用带引号的文本初始化
5         String s2 = "abcd";
6         //更通用的初始化方法
7         //创建一个引用,并与一个新的对象相关联
8         String s3 = new String("abcd");

必须由我们创建所有对象

存储到什么地方

程序运行时,对象的放置安排,内存的分配都是我们必须了解的。
有五个不同的地方可以存储数据:
1.寄存器
2.堆栈
3.
4.常量存储
5.非RAM存储

寄存器:位于数量极其有限的寄存器,是最快的存储区,寄存器会根据需求进行分配,不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象

堆栈:位于通用RAM(随机访问存储器)中,通过堆栈指针可以从处理器那里获得直接支持,堆栈指针向下移动,则分配新的内存,向上移动,则释放那些内存(这是一种快速有效的分配存储方法,仅次于寄存器)创建程序时,Java系统必须知道存储在堆栈内所有项的确切生命周期,以便上下移动堆栈指针。--->限制了程序的灵活性,所以某些Java数据(如对象引用)存储在堆栈中,但是Java对象并不存储在堆栈中

:通用的内存池(位于RAM区)。用于存储所有java对象。编译器不需要知道存储的数据在堆中存活多长时间(灵活性,但分配和清理的时间较长)。

常量存储:存放在程序代码内部。

非RAM存储:数据完全存活于程序之外,不受程序的任何控制,在程序没有运行时也可以存在。如流对象持久化对象

特例:基本类型

new一个对象存储在堆里,因此用new创建一个对象——特别是小的,简单的变量往往不是很有效的。
对于这些类型,Java采取不用new来创建变量,而是创建一个并非是引用的自动变量(直接存储值,并且存储在堆栈中)。

Java语言对于每种基本类型所占存储空间大小是固定的,不像其他语言随机器硬件架构的变化而变化。(可移植性更高)

 1        /**
 2          * 基本类型创建的不是引用,而是一个自动变量,直接存储值,并且存储在堆栈中。
 3          * 基本类型都有相对应的包装器类,能在堆中创建一个非基本对象,用来表示相对应的基本类型。
 4          */
 5         //基本类型
 6         int i = 5;
 7         //包装类型
 8         Integer integer = new Integer(i);
 9         //Java SE5自动包装
10         Integer integer1 = 4;
11         //反向转换
12         int i1 = integer1;

 

转载:http://www.cnblogs.com/JohnTsai/p/4606365.html

 

转载于:https://www.cnblogs.com/benchao/p/5262833.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++学习笔记之对文件的操作1

转载自** https://www.cnblogs.com/uniqueliu/archive/2011/08/03/2126545.html ** 前言 我们在编写程序的时候,最密不可分的就是对文件进行相应的操作,我们可以从文件中读取数据,可以将数据保存到文件,可以…… 总而言之&…

java == 如何避免空指针异常

package com.zjxnjz.mall;public class Test {public static void main(String[] args) {}public static void test1(){//变量不为null 与null比较的时候不会报空指针异常Integer a1;if(nulla) {} }public static void test1(){//变量为null 与不为null比较的时候会报空指针异…

C++学习笔记之对文件的操作2

转载自** https://www.cnblogs.com/uniqueliu/archive/2011/08/03/2126680.html ** 什么都不说了&#xff0c;继续《C学习笔记之对文件的操作<1>》的内容… 功能展示 打开文件的方式 当我们想要打开的文件不存在的时候&#xff0c;一般地&#xff0c;ofstream类的对象…

前端学习(1802):前端调试之事件伪类练习

index.html <!DOCTYPE html> <html lang"en"><head> <!--系统内置 start--> <script type"text/javascript"></script> <!--系统内置 end--><meta charset"UTF-8"><title>练习</titl…

eclipse中git解决冲突

https://www.cnblogs.com/haimishasha/p/5980416.html

C++如何产生随机数

转载自** https://www.cnblogs.com/ql698214/p/5424937.html ** 一、使用rand()函数 头文件<stdlib.h> (1) 如果你只要产生随机数而不需要设定范围的话&#xff0c;你只要用rand()就可以了&#xff1a;rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在s…

Leetcode016 3Sum Closest

public class S016 {//借鉴S015的思想&#xff0c;只是稍微有点慢public int threeSumClosest(int[] nums, int target) {Arrays.sort(nums);int result nums[0]nums[1]nums[nums.length-1];for(int i 0;i<nums.length;i){if(i>0&&nums[i]nums[i-1])continue;in…

前端学习(1809):前端调试之微博头部开发

index.html <!DOCTYPE html> <html lang"en"><head><!--系统内置 start--><script type"text/javascript"></script><!--系统内置 end--><meta charset"UTF-8"><title>微博实战--head&l…

优知学院

http://youzhixueyuan.com/single-architecture-soa-micro-service-differentiation.html

数据结构实验四 排序算法的实现

广州大学学生实验报告 开课实验室&#xff1a;计算机科学与工程实验&#xff08;电子楼416&#xff09; 2019年6月4日 学院 计算机科学与教育软件学院 年级、专业、班 姓名 学号 实验课程名称 数据结构实验 成绩 实验项目名称 实验四 排序算法 指导老…

POJ1155 TELE(树形DP)

题目是说给一棵树&#xff0c;叶子结点有负权&#xff0c;边有正权&#xff0c;问最多能选多少个叶子结点&#xff0c;使从叶子到根的权值和小于等于0。 考虑数据规模表示出状态&#xff1a;dp[u][k]表示在u结点为根的子树中选择k个叶子结点的最小权值 最后就从d[1][k]中找满足…

数据结构实验五 查找算法的实现

广州大学学生实验报告 开课实验室&#xff1a;计算机科学与工程实验&#xff08;电子楼416B&#xff09; 2019年6月11日 学院 计算机科学与教育软件学院 年级、专业、班 姓名 学号 实验课程名称 数据结构实验 成绩 实验项目名称 实验五 查找算法 指导…

margin和padding的区别

https://www.cnblogs.com/zxnn/p/8186225.html

前端学习(1811):前端调试之css装饰cursor练习

index.html <!DOCTYPE html> <html lang"en"><head><!--系统内置 start--><script type"text/javascript"></script><!--系统内置 end--><meta charset"UTF-8"><title>练习</title&g…

真机调试及上线简略流程

真机调试&#xff1a; 参考完整图文教程 --》生成证书公钥文件 --》系统应用程序-使用工具-钥匙串访问--》证书助理--》从证书颁发机构请求证书--》默认选项--》存到磁盘--》继续--》生成CertificateSigningRequest.certSigningRequest公钥文件--》生成开发证书 --》开发者管理…

数据结构实验六 综合数据处理

广州大学学生实验报告 开课实验室&#xff1a;计算机科学与工程实验&#xff08;电子楼416A&#xff09; 2019年6月14日 学院 计算机科学与教育软件学院 年级、专业、班 计算机大类 144班 姓名 学号 实验课程名称 数据结构实验 成绩 实验项目名称 实验六…

JAVA高并发秒杀系统构建之——高并发优化分析

https://blog.csdn.net/yd201430320529/article/details/70544203