Java语言的优点

  1. 纯面向对象
  2. 平台无关性:编译器编译后的中间代码由JVM解释执行
  3. 内置类库比较丰富简化开发
  4. 提供完善的安全机制异常机制以及垃圾回收机制和强类型机制
  5. 除去了C++中那一理解的特性:如多重继承,虚基类,运算符重载,指针等

Java语言和C++语言的异同

相同点:
都是面向对象语言,都提供了封装,继承,多态等特性。都具有很好的代码维护性和可重用性。
不同点:
1. Java是解释执行(源代码->字节码->JVM 解释执行)而C++是编译链接为可执行二进制代码。因此Java比C++慢,但是比C++具有更好的平台无关性
2. Java是纯面型对象语言,除了几个基本数据类型(int float…)之外所有类型都是类,所有代码都必须在类中实现;Java中也不存在全局变量或者全局函数。C++除了具有面向对象的特性之外,还具有面向过程的特性,拥有全局对象和全局变量,而且并非所有类型都是类。
3. Java没有指针的概念,避免了空指针引起的系统问题;Java没有多重继承的概念,但是可以实现多个接口达到和C++多重继承等效的效果;Java不需要程序员关系对象内存的分配,简化编程
4. C++支持运算符重载而Java不支持;C++有宏或者include头文件实现预处理,而Java没有;C++支持goto语句,但是Java虽然有goto关键字,但是仅仅是保留关键字;C++支持自动强制类型转换,而Java必须要程序员显式的进行类型转换

是否可以在main执行前执行一段指定代码

可以的,虽然main是函数的入口,通常也是第一个执行的模块,但是并一定总是最先执行。在JVM的讲解书类加载的一部分内容的时候提到过,静态代码块在类加载的时候就会被执行,因此可以在main方法所在类中,添加一些静态代码块来实现一些需要预先执行的逻辑。

Java程序初始化顺序

实例化对象的时候,对象所在的类的所有成员变量需要先进行初始化,类的成员变量全部初始化之后才会执行类的构造函数,创建对象。类的成员变量初始化原则:
1. 静态对象/变量优先于非静态;静态对象只能初始化一次而非静态变量可以初始化多次
2. 父类优先于子类
3. 按成员变量定义的顺序进行初始化

按上述的原则,有如下的初始化顺序:父类静态对象/变量,父类静态代码块,子类静态对象或变量,子类静态代码块,父类非静态变量,父类非静态代码块,父类构造函数,子类非静态变量,子类非静态代码块,子类构造函数。

Java中的作用域

  1. public :被修饰变量或方法对所有类和对象都是可见的
  2. private:只可以被当前类访问
  3. protected: 当前类以及当前类的子类(不论子类是否与父类在同一个包下),还有同一个包下的类都是可见的
  4. default: 只有当前类以及位于当前包下的类可以访问,子类如果在当前包下也可以访问,否则是不可以的,与protected不同

注意: private与protected不能用来修饰类,只有abstract final public 可以被用来修饰类

一个Java文件是否可以定义多个类

显然是可以的撒,但是最多只能有一个是public的且该public类名称必须和文件名相同

Java中没有任何方法的接口

接口是抽象方法的集合,可以看做是特殊的抽象类。接口中的方法只有定义没有实现,且都是抽象的;接口中成员的修饰符都是public的;接口中常量的默认修饰符是public static final的。

没有方法的接口也叫作标识接口,标识接口对实现它的类没有语义要求,仅仅用来说明实现该接口的类具属于某一特定类型或者具有特定属性。比如常见的:Cloneable Serializable等,可以通过instance of 来判定一个类是否实现了一个接口。

clone方法的作用

Java在处理基本类型数据的时候采用的是按值传递,但是对于其他的类类型的变量则是使用按引用传递。按引用传递的概念在参数传递的时候比较容易注意到也比较容易理解,但是Java的赋值运算’=’也是按引用传递的。这样当需要从一个已知的对象得到一个相同状态的对象的副本的时候,就需要使用clone来克隆一个同等状态的对象。
实现clone()步骤:
1. 实现clone的类集成Cloneable接口
2. 重写Object类的clone()方法,并在重写时候调用super.clone()
3. 把浅复制的引用指向原型对象的克隆体

深复制和浅复制:
浅复制:被复制的对象的所有变量都含有和原来对象相同的值(包括引用类型和基本类型),而所有对其他对象的引用仍然指向原来的对象。(也就是说对象内部所引用的对象是复制对象和被复制对象公用的)

深复制:
被复制对象的所有变量都和原来对象有相同的值,引用其他对象的变量被指向被复制的新的对象。也就是说深复制把复制对象所引用的对象也复制了一遍(类似于递归复制,直到所需要复制的对象成员变量都是基本类型为止)。

反射机制

反射机制功能:
1. 得到一个对象所属的类
2. 获取一个对象所有的成员变量和方法
3. 得运行时创建对象
4. 运行时调用对象方法

但是反射使用不当可能会严重影响系统性能

补充:创建对象的方法
1. 反射
2. clone
3. new
4. 反序列化

【Java基础】语言基础知识相关推荐

  1. Java的语言基础(一)

     Java的语言基础(一) Java是一种跨平台面向对象语言,他可以通过JVM(虚拟机)用于windows操作系统.Linux操作系统  Ios操作系统,但是J不能说jvm跨平台因为如果说jvm跨 ...

  2. Java基础—— Java的语言基础

    第二章 Java的语言基础 第一节 字符 1.字符就是各种文字和符号的总称,包括各国的文字.标点符号.图形符号.数字等. 1.1二进制码和字符的对应关系,编码. 1.2字符集市多个字符的集合,不同的字 ...

  3. JavaScript基础---语言基础(1)

    写在前面: 通过四篇博客把JS基础中的基础整理一下,方便自己查阅,这些内容对于实际项目开发中也许并不会在意,但是作为JS的语言基础,自觉还是应该熟悉.在完成这三篇博客(JavaScript基础---语 ...

  4. JAVA开发语言基础

    很多时候我们都不知道,为什么android最开始要用java作为基础语言 看看知乎上都是怎么回答的 为什么java最初成为android开发的基础语言 ------------------------ ...

  5. Java程序设计语言基础01:绪论

    目录 1. 初探HelloWorld程序 1.1 类(Class)语法元素 1.2 main方法(main method)语法元素 1.3 System.out.println 1.4 字符串 2. ...

  6. JVM垃圾回收面试题详解,java开发语言基础知识

    所以这种算法已经没人用了. 2.2 可达性分析法 2.2.1 什么是可达性 可达性分析法就是目前的主流算法,也是java正在使用的算法. 它的做法是,通过一系列被称为"GC Roots&qu ...

  7. Java程序设计语言基础04:数组

    目录 1. 数组基础 1.1 创建数组 1.2 使用数组 2. 数组的"名"与"实" 2.1 数组的"名" 2.2 数组的"实&q ...

  8. Java程序语言基础

    第一章:走进Java世界 public    static    void    main    class    system    out    print    line    problem ...

  9. Java程序设计语言基础05:Java的类和对象

    目录 1. 类的定义与组成 1.1 类的定义 2.2 类的使用 2. 类.对象和引用 2.1 类 2.2 对象 2.3 引用 3. 类的知识扩展 3.1 成员变量初始值 3.2 在类中定义自己的引用 ...

  10. java 之 语言基础

    1.关键字定义:被java语言赋予了特殊含义的单词.main不是关键字.goto const是保留字特点:字母均为小写用于定义数据类型的关键字:class interface byte short c ...

最新文章

  1. 文件操作示例脚本 tcl
  2. Java日志框架-Logback手册中文版以及官方配置文档教程
  3. 云原生一体化数仓发布
  4. 每日一题(20)——malloc与free(一)
  5. grid.getSelectionModel的所有操作
  6. rollup配置及使用
  7. django-区分时区的时间类型
  8. YII 学习笔记(2)(未完)
  9. 不用无限手套,人人都能开发 BI 系统
  10. 微信:公众号授权登录
  11. 使用matlab画信号的频域图
  12. gitlab使用Mirroring repositories远程合并代码到其他仓库
  13. 一、C++面向对象高级编程(下) (侯捷)
  14. pyecharts 画折线图去掉折线上小圆圈
  15. 思岚科技—SLAMTEC对于激光雷达的执着与坚持
  16. Pycharm导入Svn版本控制,配置svn报错
  17. BLDC的速度闭环控制
  18. Server com.webank.webase.front.Application Port 5002..Failed
  19. 全渠道下新零售行业如何进行会员管理和会员营销
  20. halcon 区域 inner_rectangle1 smallest_rectangle1 smallest_rectangle2

热门文章

  1. vb mysql 查询_vb中用sql语句查询数据库
  2. hive查看表中列的信息命令_快速了解hive
  3. 记录一下集成修改触发模式的过程
  4. c盘怎么扩容_给电脑减压,C盘清理全攻略!
  5. node升级命令_Laravel Mix 4升级说明与“排坑儿”指南
  6. 代理模式和装饰者模式
  7. 关于dataTables 的排序问题
  8. MVC使用 Elmah 日志记录组件
  9. python3-基础6
  10. 转!!java中File的delete()方法删除文件失败的原因