2020-09-12

  • 对象的创建和使用
    –>关于JVM内存管理
    - JVM(java虚拟机)主要包括三块内存空间,分别是:栈内存,堆内存,方法区内存。
    • 堆内存和方法区内存各有一个。一个线程一个栈内存。
    • 方法调用的时候,该方法所需要的内存空间在栈内存中分配,称为压栈。方法执行结束之后,该方法所属的内存空间释放,称为弹栈。
    • 栈中主要存储的是方法体当中的局部变量。
    • 方法的代码片段以及整个类的代码片段都被存储到方法区内存当中,在类加载的时候这些代码片段会载入。
    • 在程序执行过程中使用new运算符创建的java对象,存储在堆内存当中。对象内部有实例变量,所以实例变量存储在堆内存当中。
    • 变量分类:
      局部变量【方法体中声明】
      成员变量【方法体外声明】
      * 实例变量【前面修饰符中没有static】
      * 静态变量【前面修饰符中有static】
    • 静态变量存储在方法区内存当中。【先背会】
      成员变量。对象相关的,成员变量在堆中的对象中存储。
      局部变量在栈中存储。
    • 三块内存当中变化最频繁的是栈内存,最先有数据的是方法区内存,垃圾回收器主要针对的是堆内存。
    • Java中所以new出来的数据统一被存储在堆区中,程序员是无法对堆区数据直接操作,只能通过内存地址间接操作。
    • 垃圾回收器【自动垃圾回收机制,GC机制】什么时候会考虑将某个java对象的内存回收呢?
      * 当堆内存中的java对象成为垃圾数据的时候,会被垃圾回收器回收。
      • 什么时候堆内存中的java对象会变成垃圾呢?
        没有更多的引用指向它的时候。
        这个对象无法被访问,因为访问对象只能通过引用的方式访问。

2.关于java的集成开发环境【集成开发环境简称:IDE】

2.1、什么是集成开发环境?
* 集成开发环境讲究一站式开发,使用这个工具即可。有出错提示功能,有自动纠错、自动生成功能。
* 集成开发环境可以让软件开发变得更简单,更高效。
* 没有IDE工具:
— 需要安装JDK、需要配置环境变量、需要手动的将java源文件编译生成class字节码文件
— java源程序出错之后还没有提示
— 没有自动生成功能等。
* 有IDE工具:
— 不需要独立安装JDK【IDE中已经集成】
— 不需要手动配置环境变量
— 不需要使用javac命令对java源文件进行编译
— 并且java源程序编写语法错误马上又提示
— 使用IDE工具有很多代码不需要写,自动生成了。

2.2、java有哪些比较牛的IDE呢?
    * eclipse【日食】(myeclipse) 【最多】
* Intellij IDEA  【上升的趋势】
* NetBeans
* JBuilder
.......

目前阶段我们使用的是:myeclipse102.3、讲解myeclipse的使用:
     * workspace:工作区
    - 当myeclipse打开的时候,大多数都是会提示选择工作区
    - 这个工作区可以是自己存在的工作区,也可以是新建的工作区
    - 选择工作区之后,将来编写的java代码,自动编译的class文件都会在工作区中找到
    - myeclipse可以开启两个甚至更多的会话,每一个会话对应不同的workspace

 * 在workspace工作区当中有一个文件夹:.metadata

    - 在该文件夹当中存储了当前myeclipse的工作状态

    - 将.metadata文件夹删除之后,下一次再次进入这个工作区的时候,是一个全新的开始。
    但是会发现这个IDE工具当中所有的项目丢失了,没关系,这里只是丢失的myeclipse的项目,
    硬盘上真实存储的项目不会丢失。

 * 打开myeclipse之后:
    - 窗口双击可以最大化或者还原
    - 窗口可以拖动
    - 窗口不小心关闭了,可以再次打开:
       window -->  show view --> other -->输入自己要找的窗口

 * myeclipse为程序员准备了很多不同的布局方式:
     - 企业级开发:JavaEE开发的专用布局- MyEclipse Java Enterprise
     - 普通java开发的:JavaSE开发的专用布局- Java
     - 怎么切换布局?
         * myeclipse右上角

     * 当这个布局被破坏之后想复原?
    - window --> Reset...

 * 重点的窗口介绍
     - Package Explore / Navigator /Project Explore :可以看到java源文件
     - Console: 控制台窗口

 * 工作区workspace中基本的单元是:Project(工程/项目)

 * 使用myeclipse创建工程:
     - 在Package Explore窗口当中点击右键 --> new --> Java Project 【JavaSE工程】:当然还有其他方式
         * 指定Java工程的名称:一般都小写
	 * 指定java工程的存放目录
	 * Java的运行时环境:JRE的配置【可以选择使用myeclipse自带的JRE,也可以选择程序员自己安装的JRE】
	 * Project Layout :工程的目录布局
	     - 多数情况下都是选择:两个独立的文件夹存储源码(src)和字节码(bin)

     * 工程的导入和导出:
   导入: 在左侧空白区域右键 import--general--Existing projects from workspace--然后选择自己想要导入的文件
   导出: 在左侧空白区域右键 export--general--file system--选择导出成文件夹的形式(举例)

 * 如何重命名:在类文件夹上右键--Refactor--Rename--输入你想重新改的名字(以改类名为例)

 * 按左键不放可以拖动文件到指定的包里或工程里

 * 如何改工作目录:File--switch workspace--Brouse

 * 如何使结构更好看:Source--Format--系统会自动将你的格式标准化,更好看

 * Source--Generate Getters and Setters/Generate Constructer using Fields/Generate Constructer from Superclass
 系统自动生成

 * 如何使不小心关掉的窗口重新打开:
 Window--Show view--打开你需要的窗口 * 在src目录下新建软件包:package机制后面讲,目前先用着。
   - 在src目录上点击右键 --> new --> package
   - 给package起名:com.bjpowernode.javase;
   - 包package是java语法的一部分,后面讲。

 * 在软件包下新建一个java类:
    - 在包上点击鼠标右键 --> new --> class【同时生成了main方法】
    - 显示行号:在java源程序的左侧栏上点击鼠标右键:show line number
    - 设置字体大小:
       window --> Preferences --> 输入font --> colors and fonts --> Basic --> Text Font --> Edit

 * 关于myeclipse中常用的部分快捷键:
     - ctrl + d 删除一行
     - alt + / 自动补全
     - ctrl + 1 纠错
     - ctrl + Alt + Down 复制一行
     - ctrl + shift + F 格式化

 * 注意:myeclipse当中的java源代码有的时候不保存是不会编译的。所以时刻记住:ctrl + s

 * myeclipse当中,出现红色下划线的表示编译错误,语法错误。鼠标停留在红色的下划线上面会有错误提示信息。
     并且点击左边的?,可以进行纠错。【当然也可以光标停在红色下划线上面:ctrl + 1】

 * 有的时候程序出现黄色的下划线,表示警告,编译可以通过。

 * 快捷建怎么设置?
    window --> Preferences --> keys

 * 怎么运行一个带有主方法的java程序?
    - 在java源程序的任何位置点击鼠标右键 --> Run As -->Java Application

 * com.bjpowernode.java.test01 表示四个包,四个package

3、关于程序的封装性:

  面向对象三大特征:
    - 封装
- 继承
- 多态

 * 为什么要封装,封装有什么好处?

   - 好处:封装之后,对于那个事物来说,看不到这个事物比较复杂的一面,只能看到该事物简单的那一面。
   复杂性封装,对外提供简单的操作入口。照相机就是一个很好的封装案例,照相机的实现原理非常复杂,
   但是对于使用照相机的人来说,操作起来是非常方便的是非常便捷的。还有像电视机也是封装的,电视机
   内存实现非常复杂,但是对于使用者来说不需要关心内部的实现原理,只需要会操作遥控器就行。

   - 封装之后才会形成真正的"对象",真正的"独立体"

   - 封装就意味着以后的程序可以重复使用。并且这个事物应该适用性比较强,在任何场合都可以使用。

   - 封装之后,对于事物本身,提高了安全性。【安全级别高】

 * 封装的步骤
   - 所有属性私有化,使用private关键字进行修饰,private表示私有的,修饰的所有数据只能在本类中访问。

   - 对外提供简单的操作入口,也就是说以后外部程序要想访问age属性,必须通过这些简单的入口进行访问:
     对外提供两个公开的方法,分别是set方法和get方法,set方法和get方法的方法名应该遵循规范。
 想修改age属性,调用set方法
 想读取age属性,调用get方法

   - 可以通过source --> setter and getter来简化,不用自己打代码

   - set方法的命名规范:
      public void setAge(int a){
       age = a;
  }
  //set方法没有返回值,因为set方法只负责修改数据      - get方法的命名规范:
      public int getAge(){   //此方法叫成员方法,实例方法,非静态方法,成员方法必须使用引用.的方式访问
       return age;
  }

回想一下,一个属性通常访问的时候包括几种访问形式?
   第一种方式:想读取这个属性的值,读取get
   第二种方式:想修改这个属性的值。修改set

需要大家先背会以下内容:
   setter and getter 方法没有static关键字
   有static关键字修饰的方法怎么调用:类名.方法名(实参);
   没有static关键字修饰的方法怎么调用:引用.方法名(实参);

  -------------------------------------------------------------------------
  public void setAge(int age){
       age = age;//java有最近原则,这里其实并没有给age属性赋值,这里的age都是局部变量age
  }
 
  public void setAge(int a){
       //编写业务逻辑代码进行安全控制

       if(a < 0 || a > 150){
          system.out.println("对不起,您提供的年龄不合法");
	  return;
       }

       //程序可以执行到这里的话,说明a年龄是合法的,则进行赋值运算
       age = a;
  }

4.构造方法:
关于java类中的构造方法

* 构造方法又被称为构造函数/构造器/Constructor

* 构造方法语法结构:
  [修饰符列表] 构造方法名(形式参数列表){
      构造方法体;
  }

* 普通方法的语法结构:
 [修饰符列表] 返回值类型 方法名(形式参数列表){
      方法体;
  }

* 对于构造方法来说,"返回值类型"不需要指定,并且也不能写void,只要写上void,那么这个方法就成为普通方法了。

* 对于构造方法来说,构造方法的方法名必须和类名保持一致。

* 构造方法的作用?
构造方法存在的意义是:通过构造方法的调用,可以创建对象。
                       创建对象的同时,初始化实例变量的内存空间。

* 构造方法应该怎么调用?
  - 普通方法是这样调用的:方法修饰符中有static的时候:类名.方法名(实参列表)、方法修饰符列表中没有static的时候:引用.方法名(实参列表)
  - 构造方法的调用:new 构造方法名(实参列表)   * 构造方法调用执行之后,有返回值吗?
每一个构造方法实际上执行结束之后都有返回值,但是这个"return 值;"这样的语句不需要写。构造方法结束的时候java程序自动返回值。
并且返回值类型是构造方法所在类的类型。由于构造方法的返回值类型就是类本身,所以返回值类型不需要写。

* 注释和取消注释:ctrl + /; 多行注释:ctrl + shift + /

* 当一个类中没有定义任何构造方法的话,系统默认给该类提供一个无参数的构造方法,这个构造方法被称为缺省构造器。

* 当一个类显示的将构造方法定义出来了,那么系统就不再默认为这个类提供缺省构造器。建议开发中手动的为当前类提供无参数构造方法。
因为无参数构造方法太常用了。

* 构造方法支持重载机制。在一个类当中编写多个构造方法,这多个构造方法显然已经构成方法重载机制。

* 只要构造函数调用就会创建对象,并且一定是在"堆内存"中开辟内存空间。

* 只有方法才有()

* 在myeclipse当中怎么查看访问的是哪个属性,查看访问的是哪个方法?
按ctrl键,鼠标移动到查看的元素上,出现下划线的时候开始单击。

* 在一个类中元素过多,想快速查看,在当前类中使用ctrl + o 快捷键,然后输入要查找的元素名称,该名称不一定输入全名称

* 成员变量之实例变量,属于对象级别的变量,这种变量必须先有对象才能有实例变量。
实例变量没有手动赋值的时候,系统默认赋值,那么这个系统赋值是在什么时候完成的呢?
     是在类加载的时候吗?
   不是,因为类加载的时候只加载了代码片段,还没来得及创建对象,所以此时实例变量并没有初始化。

 实际上,实例变量的内存空间是在构造方法执行过程当中完成开辟的。完成初始化的。
 系统在默认赋值的时候,也是在构造方法执行过程当中完成的赋值。

实例变量默认值:
  byte,short,int,long 0
  float,double 0.0
  boolean false
  引用数据类型 null

* 构造方法也可以不写,由机器自动生成,右键-->source-->Constructor

* myeclipse/eclipse快速编辑,支持多行同时编辑:块编辑(右上角:Toggle Block Selection Mode 快捷键是Alt + shift +A)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值