java基础学习——对面向对象的重识

         最近几天在看java的视频,感觉很多东西java语法上很像c#,但是还是有很多内容惊到我:

         1,java虚拟机

             用过VMWar或者VirtualBox的童鞋都对“虚拟机”这个词有个大致的了解,虚拟机提供了个虚拟的平台,让我们可以模拟一些脱离硬件的环境。java里的虚拟机起到了一个类似以前学过的ODBC驱动程序的作用,它屏蔽了底层的差异,让操作系统通过虚拟机向下面看去,操作系统的感觉都是一样的。

          有了这一层东西,我们彻底解开了底层硬件和运行操作系统之间的耦合,实现了一次编译,到处运行的梦想。这里的解耦思想和软件的分层思想是一致的。

         如果你想让各层次都灵活变动,那么,在它们中间加上接口吧。

          2,数据类型

               在基本数据类型里面,雷到我的是数组和String是引用类型,看来以前我的c#很不扎实啊,百度了一下,c#也是这样的,它们都是引用类型;

            先讨论下对基本类型和引用类型的内存访问的区别:在访问基本类型的时候可以直接取到值,而引用类型必须先从stack 里面取到heap的地址,然后跑到heap里面去取实际的值;从对内存的访问来看,引用类型似乎没有值类型的优势。

            但从面向对象的角度看,引用类型还是有众多好处的:

          

          a.引用类型可以被序列化,原始类型不行。(这个不懂!)

          b.引用类型提供的方法可以灵活转换,可以扩展,原始类型不行

          c.在集合类中只能使用对象,不能使用原始类型

          d.原始类型没有null的概念,对象有,某些情况下需要辨别某个参数是否被初始化了,如果使用原始类型,那么0的值不知道是初始值还是没有初始化系统自动给的。

          关于两种数据类型用变和不变的观点看,基本数据类型编程语言中不变的部分,而引用类型是为了应对显示世界中的对象而动态组合的类型。

     3,构造函数的返回值问题

      

        以前学习c++的时候,碰到过很多构造函数的初始化类成员的问题。这次在学习构造函数这里的时候,视频中为了说明构造函数没有返回值的问题时,特意在为构造函数加上void,结果报错。 但是有没有想过构造函数为什么没有返回值呢?  或者说构造函数的返回值已经有一个不可更改的默认值了,就是对象本身。 想想我们使用new的时候,Dog d=new Dog(),new后面的东西就是调用的构造函数,它返回的就是d.

   

      那么,我们是不是可以认为因为类的构造函数有默认的返回值而不能自己定义返回值呢?

     

     小结:面向对象的语言到现在已经学过了VB.NET ,C #,C++,这次对java的学习,是对面向对象知识的一个重新的梳理和总结提升的过程;也是认识封装,继承,多态,抽象,并对它们重新思考的过程。

       

          

            

   

时间: 2024-08-04 07:54:03

java基础学习——对面向对象的重识的相关文章

对象-Java基础学习遇见的问题

问题描述 Java基础学习遇见的问题 我是将自定义的对象,存储到了ArrayList集合中,出现下面错误,咋回事啊 多谢各位大神! 解决方案 19行的public拼错了少了b 解决方案二: ArrayList 里面应该加参数吧 ArrayList> list= new ArrayList>();这样定义试试 解决方案三: 黑马程序员 Java基础学习笔记 线程安全问题java基础问题01java基础问题18 解决方案四: 特殊词都带色的,,,拼错了色不对... 解决方案五: 用的什么开发工具啊

java基础学习笔记之反射_java

反射 反射:将类的属性和方法映射成相应的类. 反射基本使用 获取Class类的三种方法: 类名.class 对象名.getClass() Class.forName("要加载的类名") 根据API写就行了,大致流程就是: 用上述三种方式之一获取特定类的Class类,即该类对应的字节码 调用Class对象的getConstructor(Class<?>... parameterTypes)获取构造方法对象 调用是构造方法类Constructor的newInstance(Obj

零基础轻松入门——JAVA基础学习

你准备好学习java了吗?了解一下开发java的基本过程以及java的基本特性.与C++做些简单的比较,熟悉两种语言的共性和区别,关于一些java知识体系. Java 的主要特性: 1. Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用.另一方面,Java丢弃了C++中很少使用的.很难理解的.令人迷惑的那些特性,如操作符重载.多继承.自动的强制类型转换.特别地,Java语言不使用指针,而是引用.并提供了自动的废料收集,使得程序员不必为内存管理而担忧. 2.Java是

java基础学习笔记之泛型_java

泛型 将集合中的元素限定为一个特定的类型. 术语 ArrayList<E> -- 泛型类型 ArrayList -- 原始类型 E -- 类型参数 <> -- 读作"typeof" ArrayList<Integer> -- 参数化的类型 Integer -- 实际类型参数 几点注意: 参数化类型和原始类型相互兼容 ArrayList collection1 = new ArrayList<Integer>();//通过,无warning

java语言学习002_面向对象编程思想

      人类在认识世界时,为了方便自己和智慧提升,很自然的对事物进行了分类.对世界进行了抽象,若把所有各个事物看做对象,纵观所有对象,这些对象具有各自的或共有的特征,并且又有共有的或各自的的能力,这样就可以对具有相同一些特征和一些能力的事物进行了归类.       比如,车,有汽车,火车他们都有哪些属性?                  汽车,特征:长度,颜色,速度,轮胎,载重,平面行走--能力:移动,载东西,--                  火车,特征:长度,颜色,速度,轮胎,载重

java基础学习笔记之类加载器_java

类加载器 java类加载器就是在运行时在JVM中动态地加载所需的类,java类加载器基于三个机制:委托,可见,单一. 把classpath下的那些.class文件加载进内存,处理后成为字节码,这些工作是类加载器做的. 委托机制指的是将加载类的请求传递给父加载器,如果父加载器找不到或者不能加载这个类,那么再加载他. 可见性机制指的是父加载器加载的类都能被子加载器看见,但是子加载器加载的类父加载器是看不见的. 单一性机制指的是一个类只能被同一种加载器加载一次. 默认类加载器 系统默认三个类加载器:

【J2ME 2D 游戏开发系列】◣HIMI游戏开发启蒙教程◢JAVA零基础学习J2ME游戏开发全过程!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/j2me-2/774.html Himi从写博客的最早开始就是Android游戏开发相关的,其实那么很多童鞋也知道Himi是做Java-J2me/Kjava出身,所以不少童鞋还在问我是否可以写一些J2me的相关游戏开发博文.虽然j2me趋势随着Nokia的没落和Android的崛起已经慢慢被弱化掉,但是J2me也是早些年非常火的平台不是么!

方法-初学的IT女孩,求正确解答JAVA基础概念

问题描述 初学的IT女孩,求正确解答JAVA基础概念 在面向对象编程里,每个对象...选择下面一个正确选项: a. 是另一个对象的一个属性 b. 是一个类的一个实例 c. 继承一个类 d. 具有递归方法 选择正确的语句或者JAVA里关于面向对象编程的语句(多选题) ? 继承模型IS-A关系,其中子类的对象还是超类的对象. ? 在一个超类里的方法的数量总是高于其每一个子类 ? 同样的超类的两个子类总是有相同数量的方法. 在JAVA里选择正确的关于可见度的答案.当一个属性(实例变量)在一个类里被定义

scanner-Java基础学习中Scanner类nextInt方法问题

问题描述 Java基础学习中Scanner类nextInt方法问题 import java.util.*; public class Practice { public static String prompt = "How are you? "; public static void main(String[] args) { Scanner console = new Scanner(System.in); System.out.print(prompt); //int year=