精华内容
下载资源
问答
  • /* *掌握变量概念 *掌握常用数据类型 *会使用赋值运算符、算术运算符 *掌握boolean类型关系运算符使用 *会进行数据类型转换 ...内存是电脑中主要部件,它是相对于外存而言。我们平常使用程...

    /*

    *掌握变量的概念

    *掌握常用数据类型

    *会使用赋值运算符、算术运算符

    *掌握boolean类型和关系运算符的使用

    *会进行数据类型转换

    *掌握键盘输入Scanner

    */

     

    一、内存的作用

            内存又称主存,是CPU能直接寻址的存储空间,由半导体器件制成。内存的特点是存取内存速度快、临时存储文件。内存是电脑中的主要部件,它是相对于外存而言的。我们平常使用的程序,如Windows操作系统、打字软件、游戏软件等,一般都是安装在硬盘等外存上的,但仅此是不能使用其功能的,必须把它们调入内存中运行,才能真正使用其功能,我们平时输入一段文字,或玩一个游戏,其实都是在内存中进行的。就好比在一个书房里,存放书籍的书架和书柜相当于电脑的外存,而我们工作的办公桌就是内存。通常我们把要永久保存的、大量的数据存储在外存上,而把一些临时的或少量的数据和程序放在内存上,当然内存的好坏会直接影响电脑的运行速度。

     

    变量定义:为存储一个数据的申请存储空间。

    变量类比旅馆

    内存

    旅馆

    变量

    房间

    数据类型

    房间类型(单人间、双人间、总统套房等)

    变量名

    房间号(同种类型有多个这样的房间)

    存储内容

    入住的人

    变量命名规则(必须遵守):

    1、开头必须是字母、下滑线、$

    2、其余部分必须是字母、下划线、$、数字

    3、不能为Java中的关键字

    变量命名规范(行业默认)通常第一格单词首字母小写,其后单词首字母大写(驼峰命名)

     

    二、Java四类八种数据类型

    注:数据类型的作用,因为内存大小不像磁盘那么夸张,仅有几个GB甚至更小。类比书桌的比喻,要想同时处理更多的文件,就必须合理的申请一块空间去处理对应的问题,由此就出现数据类型划分好申请的内存空间大小。

     

    基本数据类型和引用数据类型的分析

    一、基本数据类型 与 引用类型 在内存中的保存内容

    Java中的变量分为基本数据类型引用类型两种。基本类型的变量保存数值本身,而引用类型的变量保存的是引用值,即指向内存空间的地址

    基本数据类型四类八种(如上图);

    引用数据类型包括:类、接口和数组(如上图)。

     

    • 基本类型 与 引用类型 的区别

    1、基本类型在声明其变量时就为它分配了空间,赋有具体的值(具体来说是在变量被使用之前必须被赋值);

    2、而引用不同,在进行引用的声明时只给变量声明了引用空间,而不分配数据空间(注意:引用也是占用空间,一个空对象的引用大小大概是4byte)。

     

    三、引用传递和值传递(暂时作为了解)

    *值传递:方法调用时,实际参数将它的值传递给对应的形式参数,函数接收到的是原始值的副本,此时内存中存在两个相等的基本类型,若方法中对形参执行处理操作,并不会影响 实际参数 的值。

    *引用传递:方法调用时,实际参数的引用(是指地址,而不是参数的值)被传递给方法中相应的形式参数,函数接收到的是原始值的内存地址,在方法中,形参与实参的内容相同,方法中对形参的处理会影响实参的值。

    输出结果:100、99、100、100

    * 这里要特殊考虑String,以及Integer、Double等几个基本类型包装类,它们都是immutable类型,
    因为没有提供自身修改的函数,每次操作都是新生成一个对象,所以要特殊对待,可以认为是和基本数据类型相似,传值操作。

    四、结论

    1)形参为基本类型时,对形参的处理不会影响实参。

    2)形参为引用类型时,对形参的处理会影响实参。

    3)String,Integer,Double等immutable类型的特殊处理,可以理解为值传递,形参操作不会影响实参对象。

     

    第一类:逻辑型boolean

    Boolean类型数据只允许取之true或false;

    不可以0或非0的整数替代true和false,这点和C语言不同

    第二类:文本型char

    Char类型占2个字节,字符常量为单引号括起来的单个字符

    Java字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式表示

    Unicode是全球语言统一编码

    Java语言中还允许使用转义字符‘\’来将其后的字符转变为其他的含义

    第三类:整数型(byte、short、int、long)

    byte从-128到127

    short从-32768到32767

    int从-2147483648到2147483647共10

    long从-9223372036854775808到9223372036854775807共19

    Java各整数类型有固定的表数范围和字段长度,其不受具体操作系统的影响以保证Java程序的可移植性

    Java语言的整型常量默认为int型,声明long型常量可以后加lL’,建议使用L,小写和数字1难以区别

    第四类:浮点型(float、double)

    在数学中0到1有无数个浮点数;而计算机是离散的,所以表示的时候有误差,计算机用精度(小数点后几位来表示正确)

    与整数类型类似,Java浮点型有固定的表数范围和字段长度,不受平台影响

    A.单精度浮点数(float)双精度浮点数(double)的区别如下:

    (1)在内存中占有的字节数不同

    单精度浮点数在机内占4个字节

    双精度浮点数在机内占8个字节

    (2)有效数字位数不同

    单精度浮点数有效数字8位

    双精度浮点数有效数字16位

    (3)所能表示数的范围不同

    单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38

    双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308

    (4)在程序中处理速度不同
    一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快

    Java浮点型常量默认为double型,如要声明一个常量为float型,则需在数字后面加f或F

     

    Java数据类型转换规则

    A、blooean类型不可以转换为其他的数据类型

    B、整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:

    1、容量小的类型自动转换为容量大的数据类型,数据类型按容量大小排序为

    byte,short,char->int->long->float->double

    byte,short,char之间不会相互转换,它们三者在计算时首先会转换为int类型

    2、容量大的数据转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意

    3、有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算

     

    三、赋值运算符(=):把右侧的表达式赋值给左侧变量名

    注:

    前缀自增(++)自减法(--):先进行自增或自减运算,再进行表达式运算立马变)

    后缀自增(++)自减法(--):先进行表达式运算,再进行自增或自减运算(用的时候变)

     

    ***位运算符(只作为了解)

    Java定义了位运算符,应用于整数类型byte、short、int、long、char等,位运算符作用在所有的位上,并且按位运算。

     

    逻辑运算符

    注:短路逻辑运算符

    &&特点:两边都为为true时,结果才为true。那么当得到第一个操作位false时,其结果就必定是false,后面的true或者false对最终结果没有任何影响,所以java的设定就是:&&第一个为false时不对后面的表达式进行计算或者判断

    同理 || 的特点:一真即为真。那么第一个为true,后面的true或者false对最终结果没有任何影响,所以java的设定就是:&&第一个为true时不对后面的表达式进行计算或者判断

     

    条件运算符(三元运算符)

    条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。

    Variable×=(expression)?Value  if  true  :value  if  false

     

    Java运算符优先级

    最高优先级:小括号

    最低优先级:赋值运算符

    优先级顺序:算术运算符>关系运算符>逻辑运算符

     

    数据的输入

    import java.util.Scanner;                              //引用Java路径util下的扫描仪Scanner

    public class Test{                                          //外层框架

        public static void main(String[] args){         //main方法入口

            Scanner in=new Scanner(System.in);      //把新的扫面仪复制给in

            System.out.println("请输入你的姓名:");     //提示输入内容

            String name=in.next();                                //把in扫描仪输入的内容复制给String类型的name

            System.out.println("请输入你的户籍:");      //提示输入内容

            String home=in.next();                                 //把in扫描仪输入的内容复制给String类型的home

            System.out.println("请输入你的年龄:");      //提示输入内容

            int age=in.nextInt();                                      //把in扫描仪输入的内容复制给int类型的age

            System.out.println("姓名"+name+"户籍"+home+"年龄"+age);

        }

    }

    本篇文章,引用了很多网上收集的资料,感谢:菜鸟教程、CSND、百度等

    展开全文
  • WOR WOR格式可编辑 专业知识整理分享 专业知识整理分享 第4章习题参考答案 按存储器在计算机中的作用存储器可分为哪几类简述其特点 答 存储器根据其在计算机系统中的作用分主存储器内存辅助存储器外存和高 速缓冲...
  • 第 4 章 习题参考答案 按存储器在计算机中的作用存储器可分为哪几类简述其特点 答 存储器根据其在计算机系统中的作用分主存储器内存 辅助存储器外存和高速缓冲存储器 主存储器用来存 CPU可直接访问的程序数据其...
  • 4 章 习题参考答案 按存储器在计算机中的作用存储器可分为哪几类简述其特点 答 存储器根据其在计算机系统中的作用分主存储器内存 辅助存储器外存和高速缓冲存储器 主存储器用来存 CPU可直接访问的程序数据其特点是...
  • 存储器的层次结构 存储器的分类: 按 在计算机中的作用(层次) 分类: 主存储器:简称主存,又称内存储器(内存) ...辅助存储器:简称辅存, 又称外存储器(外存),是主存储器的后援存储器,用来存放当前暂时不用...

    存储器的层次结构

    存储器的分类:

    在计算机中的作用(层次) 分类:

    1. 主存储器:简称主存,又称内存储器(内存)
      用来存放计算机运行期间所需的大量程序和数据,CPU可以直接随机地对其进行访问,也可以和高速缓冲存储器(Cache)以及辅助存储器交换数据。
      其特点是容量较小、存取速度较快、每位价格较高

    2. 辅助存储器:简称辅存, 又称外存储器(外存),是主存储器的后援存储器,用来存放当前暂时不用的程序和数据,以及一些需要 永久性保存的信息,它不能与CPU直接交换信息
      其特点是容量极大、存取速度较慢、单位成本低

    3. 高速缓冲有储器:简称Cache,位于主存和CPU之间
      用来存放正在执行的程序段和数据,以便CPU能高速地使用它们。Cache的存取速度可以与CPU的速度相匹配,
      存储容量小、价格高

    按存储介质分类:

    1. 磁表面存储器(磁盘、磁带)
    2. 磁芯存储器半导体存储器(MOS型存储器、双极型存储器)
    3. 光存储器(光盘)

    按存取方式分类:

    1. 随机存储器(RAM):存储器的任何一个存储单元的内容都可以随机存取,而且存取时间与存储单元的物理位置无关,主要用做主存或高速缓冲存储器。
      RAM又分为静态RAM (以触发器原理寄存信息)动态RAM (以电容充电原理寄存信息)
    2. 只读存储器(ROM):存储器的内容只能随机读出而不能写入。信息一旦写入存储器就固定不变了,即使断电,内容也不会丢失。它与随机存储器可共同作为主存的一部分 ,统构成主存的地址域
    3. 串行访问存储器:对存储单元进行读/写操作时,需按其物理位置的先后顺序寻址
      顺序存取存储器(如磁带):只能按某种顺序存取,存取时间的长短与信息在存储体上的物理位置有关,其特点是存取速度慢。
      直接存取存储器(如磁盘):既不像RAM那样随机地访问任个存储单元, 也不像顺序存取存储器那样完全按顺序存取,而是介于两者之间。存取信息时通常先寻找整个存储器中的某个小区域(如磁盘上的磁道),再在小区域内顺序查找。

    按信息的可保存性分类:

    1. 易失性存储器:断电后,存储信息即消失的存储器,如RAM。
    2. 非易失性存储器:断电后信息仍保持的存储器,如ROM、磁表面存储器和光存储器.

    破坏性读出:某个存储单元所存储的信息被读出时,原存储信息将被破坏,每次读出操作后,必须紧接一个再生的操作,以便恢复被破坏的信息。

    非破坏性读出:读出时,被读单元原在储信息不被破坏

    存储器的性能指标:

    • 存储容量
    • 单位成本
    • 存储速度

    存储容量 = 存储字数 X 字长(如 1M x 8位)
    单位换算:1B (Byte,字节)= 8b(bit,位)

    存储字数表示存储器的地址空间大小,字长表示一次存取操作的数据量。

    单位成本:每位价格 = 总成本 / 总容量。

    存储速度:数据传输率 = 数据的宽度 / 存储周期。

    存取时间(Ta):存取时间是指从启动一次存储器操作到完成该操作所用的时间。分为读出时间和写入时间。

    存取周期:又称为读写周期或访问周期,它是指存储器进行一次完整的读写操作所需要的全部时间,即连续两次独立的访问存储器操作之间所需的最小时间间隔。

    主存带宽:又称数据传输率,单位是字每秒、字节每秒(B / s)、位每秒(b / s)

    存取时间不等于存取周期,通常存储周期大于存取时间

    多级存储系统:

    “Cache——主存” 层次 和 “主存——辅存” 层次,前者主要解决CPU和主存速度不匹配的问题,后者主要解决存储系统的容量问题

    易错知识点:

    磁盘属于直接存取存储器,速度介于随机存取储存器和顺序存取储存器之间

    CPU不能直接访问硬盘。首先将硬盘中的数据调入内存才能被CPU访问

    Cache中的内容只是主存内容的部分副本,因而Cache主存结构并没有增加主存容量,是为了解决主存与CPU速度不匹配的问题

    展开全文
  • 1、按照在计算机中的作用(层次)进行分类: (1)主存储器:简称主存,就是我们常说的内存。用来存放计算机运行期间所需要的大量程序数据,其主要特点是可以直接CPU交换信息、容量小、存取速度快、单位成本高...

    存储器的分类

      存储器有很多很多种,从不同的角度对存储器有不同的分类。

    1、按照在计算机中的作用(层次)进行分类:

      (1)主存储器:简称主存,就是我们常说的内存。用来存放计算机运行期间所需要的大量程序和数据,其主要特点是可以直接和CPU交换信息、容量小、存取速度快、单位成本高。

      (2)辅助存储器:简称辅存,就是我们常说的外存。主存储器速度快,可以和CPU直接交换信息,其容量也随着计算机硬件技术的发展不断增大,但是不可能将计算机所有的用户进程和系统所需的程序和数据放入内存。所以我们主存中只存放正在运行的相关程序和数据,而暂时不用的程序和数据以及需要永久保存的信息先存放到辅存中,其特点是不能与CPU直接交换信息、容量大、存取速度较慢、单位成本较低。

      (3)高速缓冲存储器:简称Cache,位于主存和CPU之间,用于存放正在执行的程序段和数据以及经常使用的相关程序和数据。CPU从主存请求信息的速度是比主存提供信息的速度快的,如果没有Cache,那么CPU会花费时间等待主存将信息提供完毕,这会降低CPU的利用率。Cache与CPU速度相匹配,但是容量小,价格高。

    2、按照存储介质分类:

      (1)磁表面存储器:这种存储器是在金属或塑料基体的表面涂上一层磁性材料作为记录介质,工作时磁层随载体告诉运转,用磁头在磁层上进行读写操作。例如磁盘、磁带、磁鼓(现在磁鼓很少被采用)这类存储器具有非易失性。

      (2)磁芯存储器:由硬磁材料做成的环状元件,在磁心中穿有驱动线和读出线。也是属于非易失性的永久记忆存储器,由于其体积太大,工艺复杂等因素现在已经基本上不采用了。

      (3)光盘存储器:使用激光在记录介质上进行读写的存储器,具有非易失性的特点。其记录密度高、耐用性好、可靠性高、可交互性强,现在越来越被用于计算机系统

      (由于辅助存储器常常保存永久性的信息,所以以上三种存储器在计算机中往往都作为辅存)

      (4)半导体存储器:存储元件由半导体器件组成。现代半导体存储器都用超大规模集成电路工艺制成芯片,其体积小、功耗低、存取时间短。但是它是易失性存储器,我们的主存往往使用的都是半导体存储器。半导体存储器按照材料不同分为双极型(TTL)半导体存储器和MOS半导体存储器,前者高速,后者高集成度、制造简单、成本较低,故MOS半导体存储器被广泛应用。

    3、按存取方式分类:

      (1)随机存储器(RAM,Random Access Memory):任何一个存储单元的内容都可以随机存取,存取时间与存储单元的物理位置无关。计算机中的主存往往采用这种随机存储器,按照存储信息的原理不同可分为静态RAM(SRAM,原理是触发器寄存信息)和动态RAM(DRAM,原理是电容充放电寄存信息)。

      (2)只读存储器(ROM,Read Only Memory):顾名思义,存储器的内容只能随机读出而不能写入。信息一旦写入就固定不变了,内容断电不会丢失。通常用它来存储固定不变的程序、常数和汉字库,甚至用于操作系统的固化。它与RAM可以共同作为主存的一部分,统一构成主存的地址域。

        ROM派生出很多存储器,其中也包含可重复写入的类型,ROM和RAM的存取方式都为随机存取,广义上的只读存储器已经可以通过电擦除等方式进行写入了,“只读”的概念并没有保留,只保留了断电内容保留、随机读取的特性,其写入速度比读取速度慢很多。

        ROM的类型:

        掩膜式只读存储器(MROM,Masked ROM):它的内容由厂家根据用户的要求在生产中直接写入,写入后任何人都无法改变其中的内容。

        一次可编程只读存储器(PROM,Programmable ROM):它可以实现一次性编程的只读存储器。允许用户利用专门的设备写入自己的 程序,一旦写入后,内容无法改变。

       可擦除可编程只读存储器(EPROM,Erasable Programmable ROM):可由用户对其内容进行多次改写。需要修改时先将其内容全部擦除,然后再编程。EPROM由可以分为两种,紫外线擦除(UVEPROM)和电擦除(EEPROM)。虽然EPROM可以读写,但是写入时间过长,写入次数有限,不能代替RAM。

       闪速存储器(Flash Memory):它是在EPROM和EEPROM的基础上发展起来的,可以在不加电的情况下长期保存信息,又能在线快速擦除和重写,价格比EPROM便宜,擦除重写速度比EEPROM快。

       固态硬盘(SSD,Solid State Drives):用固态电子存储器芯片阵列制成的硬盘,由控制单元和存储单元(FLASH芯片)组成

      (3)串行访问存储器:对存储单元进行读写操作时,需要按照其物理位置的先后顺序寻址,包括顺序存取存储器(如磁带)和直接存取存储器(如磁盘)。需要注意的是这里的直接存取存储器是介于顺序存取和随机存取之间的,如对磁盘的读写,按照柱面号,盘面号,扇区号找到存放信息的小区域,再顺序存取所需要的信息。

    4、按信息的可保存性分类:

      (1)易失性存储器:断电后存储信息消失,如RAM。

      (2)非易失性存储器:断电后存储信息保留,如ROM、磁表面存储器等。

       另外有些存储器信息被读出时,原存储信息将被破坏,成为破坏性读出,这种存储器读出后需要跟一个恢复操作,再生信息。


       如有错误,还望指正~

    展开全文
  • 图像重绘

    2012-07-14 11:09:18
    缓存就是计算机里的硬盘,外存的特点 是可以永久地保存数据(在硬盘不会损坏的情况下),它的缺点是:存储数据读取数据的速度 很慢。内存是介于外存与缓存之间,计算机所要运行的所有程序,必须先从外存读取到内存...

    一、为什么要重绘

    1、计算机有三种存储数据的存储器--外存、内存和缓存。缓存就是计算机里的硬盘,外存的特点 是可以永久地保存数据(在硬盘不会损坏的情况下),它的缺点是:存储数据和读取数据的速度 很慢。内存是介于外存与缓存之间,计算机所要运行的所有程序,必须先从外存读取到内存中, 这当然也包括操作系统。还有内存在通电状态下才有保存数据的作用,如果计算机的电源关闭了 ,内存里的数据也会消失,所以我们在做一些重要的文档时要及时保存数据,这里的保存是将内 存里的数据保存到外存里,也就是硬盘上。缓存是CPU上的一块存储器,它是用来临时保存CPU马 上要处理的数据,一旦里面的数据不需要了,缓存就会马上被清空。

    2、我们在画图板上画的图形,它的数据是被临时保存在缓存里的,当我们把窗口最大化或最小化, 或其他的操作是,缓存里的数据就会被清空。而当我们再把窗口还原是,窗口的数据会重新从内存读 到缓存里,经过处理后吧窗体显示,但是因为我们没有把我们画的图形的数据保存起来,所以当窗体 重新显示时,我们之前画的图形并没有显示。所以要让我们画的图形能够重新显示,我们必须把图形 的数据保存起来。

    二、重绘的方法

    1、用队列来保存数据 队列是用来保存数据的一种数据结构,它相当于一个动态数组,所以我们可以用它来保存我们 在画图板上所画的图形的数据。思路就是我们每画一个图形,就把它保存到队列里去,当需要重 绘时,只需要把队列里的数据重新取出来,把它画到画图板上。

    下面是我自定义的保存图形数据 的队列:

         public class mylist<E> {
    	//将数组定义为Object数组,表示能存放Java中所有的对象
    	private Object[] src = new Object[0];
    	/**
    	 * 将指定的数据放入队列容器中
    	 * 
    	 * @param e
    	 *            要放入队列容器的数据
    	 */
    	public void add(E e) {
    		//定义一个新数组,长度是原始数组长度+1
    		Object dest[] = new Object[src.length+1];
    		
    		//将新元素放入新数组最后一个下标位置
    		dest[src.length] = e;
    		//将原始数组中的元素按照下标顺序拷贝到新数组
    		for(int i=0;i<src.length;i++){
    			dest[i] = src[i];
    		}
    		
    		//将原数组名指向新数组
    		src = dest;
    	}
    
    	/**
    	 * 取出指定下标位置的元素
    	 * 
    	 * @param index
    	 *            要取出的元素的下标
    	 * @return 返回取得的元素
    	 */
    	public E get(int index) {
    		//得到src对应下标的元素
    		E e = (E)src[index];
    		return e;
    	}
    
    	/**
    	 * 删除指定位置的元素
    	 * 
    	 * @param index
    	 *             要删除的元素的下标
    	 */
    	public void delete(int index) {
    		//创建一个长度比src小1的数组
    		Object [] arr =new Object[src.length-1];
    		//拷贝下表之前的元素
            for(int i=0;i<index;i++){
            	arr[i]=src[i];
            }
            //拷贝下标之后的元素
            for(int j=index;j<src.length;j++){
            	arr[j]=src[j+1];
            }
            //修改后让src指向arr
            src=arr;
    	}
    
    	/**
    	 * 将指定位置的元素修改为指定的值
    	 * 
    	 * @param index
    	 *            要修改的元素的下标
    	 * @param num
    	 *            修改之后的新值
    	 */
    	public void modify(int index, E e) {
    		src[index] = e;
    	}
    
    	/**
    	 * 在指定的位置插入指定的元素值
    	 * 
    	 * @param index
    	 *            要插入元素的位置
    	 * @param e
    	 *            要插入的元素
    	 */
    	public void insert(int index, E e) {
           //创建一个比src大1的数组
    	    Object [] arr =new Object[src.length+1];
    	    //拷贝添加的元素下标之前的元素
    	    for(int i=0;i<index;i++){
    	    	arr[i]=src[i];
    	    }
    	    //添加要插入的元素
    	    arr[index]=e;
    	    //拷贝添加元素下标之后的元素
    	    for(int j=index;j<arr.length;j++){
    	    	arr[j+1]=src[j];
    	    }
    	    //让src重新指向arr
    	     src=arr;
    	}
    
    	/**
    	 * 得到容器中元素个数的方法
    	 * 
    	 * @return 返回容器中的元素个数
    	 */
    	public int size() {
    		//队列长度就是src数组的当前长度
    		int len = src.length;
    		return len;
    	}
         }

      还有一个用来保存图形相关信息的一个类:

     public class myshape {
    	   //定义形状的属性
            private byte type;
            //保存坐标的属性
            private int x1,y1,x2,y2;
            //设置颜色属性
            private Color color;   
            //设置形状的方法        
            public void setShape(byte type){
            	this.type=type;
            }
            //获取形状的方法
            public byte getShape(){
            	return type;
            }
            //给坐标赋值的 方法
            public void setvalue(int x1,int y1,int x2,int y2){
            	this.x1=x1;
            	this.y1=y1; 
            	this.x2=x2;
            	this.y2=y2;
            }  
         
            //获取x1坐标值的方法
            public int getx1(){
            	 return x1;      
            }  
            //获取y1坐标值的方法
            public int gety1(){
            	 return y1;      
            }  
            //获取x2坐标值的方法
            public int getx2(){
            	 return x2;      
            }  
            //获取y2坐标值的方法
            public int gety2(){
            	 return y2;      
            }  
          //定义设置颜色的方法
            public void setcolor(Color color){
            	this.color=color;
            }
          //定义获得颜色的方法
            public Color getcolor() {
        		return color;
            }
         } 

     重绘部分的代码

    	  //在调用子类重写了的方法时,需要先调用父类中原有的方法???
    	  public void paint(Graphics g) {
    		    super.paint(g);//调用父类中的方法
    		 
    		  //把原来画的东西,自己写代码,再画出来!
    		  //获得队列对象
    		  mylist mlis=drl.getMylist();
    		  for(int i=0;i<mlis.size();i++){
    			  //获得队列中的元素
    			  Object ms=mlis.get(i);
    			  //强制转换为myshape类型
    			  myshape sp=(myshape)ms;
    			  //画直线
    			  if(sp.getShape()==1){
    				  //设置颜色
    				  hb.setColor(sp.getcolor());
    				  hb.drawLine(sp.getx1(), sp.gety1(), sp.getx2(), sp.gety2());
    			  }
    			 //画圆
    			  if(sp.getShape()==2){
    				  //设置颜色
    				  hb.setColor(sp.getcolor());
    				  hb.drawOval(sp.getx1(), sp.gety1(), sp.getx2(), sp.gety2()); 
    			  }
    			  //画矩形
    			  if(sp.getShape()==3){
    				  //设置颜色
    				  hb.setColor(sp.getcolor());
    				  hb.drawRect(sp.getx1(), sp.gety1(), sp.getx2(), sp.gety2()); 
    			  }
    			  // 话填充矩形
    			  if(sp.getShape()==4){
    				  //设置颜色
    				  hb.setColor(sp.getcolor());	  
    			      hb.fillRect(sp.getx1(), sp.gety1(), sp.getx2(), sp.gety2()); 
    		      }
    		      //画填充圆
    			  if(sp.getShape()==5){
    				  //设置颜色
    				  hb.setColor(sp.getcolor());
    				  hb.fillOval(sp.getx1(), sp.gety1(), sp.getx2(), sp.gety2()); 
    			  }
    		  }
    	  }

     用这种方法进行重绘,十分严重的问题是当画的形状过多时,队列里面会保存大量的数据,而很多又是不需要的,所以我们得用另一种方法来重绘

    2、用数组来保存数据 数组怎么用来保存图形的信息呢?

    首先,让我们先了解一下计算机屏幕显示图像的原理。我们在 屏幕上看到的图像其实是有一个个像素点组成的,每个像素点可以显示不同的颜色,于是不同颜色 的像素点有机的组合在一起,便形成了丰富多彩的图像。根据这一点,想想如果我们能把屏幕上的 每个像素点的颜色信息保存起来,不就能把画图板上的图像信息保存了吗。而像素点的颜色值可以 用一个整数来表示,又画图板是一个矩形区域,所以用一个二维数组来保存是最合适的。

    下面是保存画图板上每个像素点的颜色值的主要代码:

    // 获取drawPanel左上角的相对于屏幕的位置
    		Point point = drjp.getLocationOnScreen();
    		// 获取drawPanel的大小
    		java.awt.Dimension dim = drjp.getPreferredSize();
    
    		// 创建一个要截取的区域对象(就是drawPanel所占据的区域)
    		java.awt.Rectangle rect = new java.awt.Rectangle(point, dim);
    
    		// 绘制完一个图像就截屏
    		BufferedImage img = robot.createScreenCapture(rect);
    
    		// 根据图像创建二维数组
    		data = new int[img.getHeight()][img.getWidth()];		
    		// 将图像上的每一个点的颜色存储到数组中
    		for (int i = 0; i < data.length; i++) {
    			for (int j = 0; j < data[i].length; j++) {
    				int rgb = img.getRGB(j, i);
    				// 将坐标和下标对应保存颜色
    				data[i][j] = rgb;
    			}		
    		}		
     

     

     

    展开全文
  • 第6章 半导体存储器

    千次阅读 2018-01-16 17:10:32
    6.1存储器及半导体存储器分类 存储器是计算机用来存储信息部件。 6.1.1 存储器分类 ...作用:计算机要执行程序要处理数据等都必须事先调入内存后方可被CPU读取并执行。 外存:把通过接口
  • 1.进制转换 2.计算机发展史(计算机发展4个阶段) 3.冯诺依曼结构机器5大结构单元...7.计算机存储器分类以及主要区别(包括区分内存和外存) 8.计算机以及CPU性能指标 9.参见英文表述(CPU、CAD、CAM
  • 计算机存储器-初识

    2018-04-13 17:42:36
    一 存储器的分类1 按在计算机中的作用分类1)主存储器:简称主存,又称内存,用来存放计算机运行期间所需的大量程序数据,通常由RAM组成,CPU可以直接随机的对其进行访问,也可以Cache以及辅交换数据。特点是...
  • 存储器管理系统存储器的分类:存储器按在计算机的作用(层次)分类** 1)主存储器: 简称主存,又...2)辅助存储器:简称辅存,又称为外存储(外存),是主存储器的后援存储器。用它来存放暂时不需要的程序数据,以及
  • 简称主存,又称内存储器(内存),用来存放计算机运行期间所需大量程序数据,CPU 可以直接随机地对其进行访问,也可以告诉缓冲存储器(Cache)及辅助存储器交换数据,其特点是容量较小、存取速度较快、单位...
  • 第三章属于考察重点,涉及到存储器扩展分类与cache连接等知识点,不仅复杂而且很容易出错,属于重点内容。 ...辅助存储器又称外存储器(外存),用例存放当前暂时不用程序数据以及一些需要
  • 8� 半导体存储器称为内存�存储容量更大磁盘存储器和光盘存储器称为外存内存和外 存共同用来保存二进制数据。运算器和控制器合在一起称为中央处理器�简称 CPU�它 用来控制计算机及进行算术逻辑运算。适配器是...
  • 40、如何设置TOMCAT内存和连接数? 我答案: Tomcat群集 41、你如何理解Tomcat是什么? 我答案: Tomcat是JSP Servlet 容器恰当说 42、静态变量和实例变量区别? 我答案: 静态变量域用...
  • (1)虚存容量不是无限,极端情况受内存和外存可利用总容量限制; (2)虚存容量还受计算机总线地址结构限制; (3)速度和容量“时空”矛盾,虛存量“扩大”是以牺牲CPU工作时间以及内外存交换...
  • 尽我所知,除了文中特别加以标注致谢地方,论文中不包含其他人已经发表或撰写过研究成果,也不包含为获得东南大学或其它教育机构学位或证书而使用过材料。与我一同工作同志对本研究所做任何贡献均已...
  • 操作系统学习(2)

    2017-06-04 22:44:47
    这些作业放在外存中,组成一个后备队列,系统按一定调度原则每次从后备作业队列中选取一个或多个作业进入内存运行,运行作业结束、退出运行后备作业进入运行均由系统自动实现,从而在系统中形成一个自动转接、...
  • 8.1.3 类对象的作用 8.1.4 面向对象的软件开发 8.2 类的声明对象的定义 8.2.1 类对象的关系 8.2.2 声明类类型 8.2.3 定义对象的方法 8.2.4 类结构体类型的异同 8.3 类的成员函数 8.3.1 成员函数的性质 8.3.2...
  • 答:虚拟存储器是程序员面对一个巨大、可寻址存储空间,这个空间是内存外存联合形成,在操作系统管理下,程序可象访问内存一样去访问外存而获得所需数据。物理存储器是指机器实际拥有内存储器,不包括...
  • 10.1 内存管理的作用 10.2 虚拟内存的抽象模型 10.3 按需装入页面 10.4 交换 10.5 共享虚拟内存 10.6 存取控制 10.7 高速缓存 10.7.1 缓冲区高速缓存 10.7.2 页面高速缓存 10.7.3 交换高速缓存 10.7.4 硬件高速缓存 ...
  • PowerShadow(影子系统)

    2008-10-25 07:53:32
     虚拟内存:虚拟内存是windows为了弥补物理内存的容量不足,设置使用硬盘空间来交换不活跃、物理内存不足以存放的内存数据一种机制。如果你物理内存足够大,你也可以不使用虚拟内存,这样系统速度会...
  • 会计理论考试题

    2012-03-07 21:04:40
    21.计算机操作系统的作用是 __D___ 。 A、控制计算机的硬件设备 B、执行用户编写的源程序 C、对各种数据进行操作 D、控制管理系统的软硬件资源 22.在硬盘上找某个文件,但不知在哪个文件夹中,下列___B____方法较...
  • 大,且占用大量交换机内存和外存,不能满足对实时性要求高用户。报文交换适用于传 输报文较短、实时性要求较低网络用户之间通信,如公用电报网。 (3)分组交换分组交换实质上是在“存储——转发”基础上...
  • 10.1 内存管理的作用 83 10.2 虚拟内存的抽象模型 83 10.3 按需装入页面 84 10.4 交换 85 10.5 共享虚拟内存 85 10.6 存取控制 85 10.7 高速缓存 86 10.7.1 缓冲区高速缓存 86 10.7.2 页面高速缓存 86 10.7.3 交换...
  • 2004-2010软考程序员真题

    热门讨论 2012-09-27 12:33:00
     C)将指定文档从外存中读入,并显示出来 D)显示并打印指走文档内容  16、Word"文件"命令菜单底部显示文件名所对应文件是  A)当前被操作文件 B)当前已经打开所有文件  C)最近被操作过文件 D)扩展...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    这里笔者把比较重要使用频率最多的命令,按照它们在系统中的作用分成下面六个部分一一介绍。 ◆ 安装登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last; ◆ 文件处理命令...
  • 在主函数中输入n值,并作为实参,在调用时传送给s 函数的形参量n( 注意,本例的形参变量实参变量的标识符都为n, 但这是两个不同的量,各自的作用域不同)。 在主函数中用printf 语句输出一次n值,这个n值是实参n的...

空空如也

空空如也

1 2
收藏数 38
精华内容 15
关键字:

内存和外存的作用和特点