Java---基本概念

Java编程基础与特性详解

Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言 (编程忌讳背诵)

导言部分:

Java,JavaSE,JavaScrippt的区别(摘录自老九君的文章)

Java分为:JavaSE、JavaEE、JavaME

Java SE是Java平台标准版的简称(Java platform, standard edition),Java SE 以前称为 J2SE。适用于标准的应用开发,用于开发和部署桌面、服务器以及嵌入设备和实时环境中的Java应用程序。Java SE包括用于开发Java web服务的类库,同时,Java SE为Java EE提供了基础。

Java 和 JavaScript 是两门不同的编程语言

它们的相同之处包括:

  • 它们的语法和 C 语言都很相似;
  • 它们都是面向对象的(虽然实现的方式略有不同);
  • JavaScript 在设计时参照了 Java 的命名规则;

它们的不同之处包括:

  • JavaScript 是动态类型语言,而 Java 是静态类型语言;
  • JavaScript 是弱类型的,Java 属于强类型;
  • JavaScript 的面向对象是基于原型的(prototype-based)实现的,Java 是基于类(class-based)的;

  JavaScript 除了长得和 Java 比较像之外,语言风格相去甚远。JavaScript 在设计时所参考的对象不包括 Java,而包括了像 Self 和 Scheme 这样的语言。

入门Java先学什么?

  JavaSE是入门Java的基础知识,其余两种是高级Java知识,必须先学习JavaSE才可以学习JavaSE和JavaME中的一种或两种

一.什么是JDK? 

JDK(即Java Development Kit的缩写)又称J2SDK(Java Softwar Development Kit), 是Java开发工具包,它提供了Java的开发环境(提供了编译器javac等工具,用于将java文件编译为class文件) 和运行环境(提供了JVM(注释看下)和runtime辅助包(注释看下),用于解析class文件使其得到运行.)如果 你下载并安装了JDK,那么你不仅可以开发Java程序,也同时拥有了运行Java程序的平台.JDK是整个Java的核心,包括了Java运行环境(JRE), 以及一堆Java工具tools,jar和Java标准类库(rt.jar).

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行

runtime(内存管理)运行时刻是指一个程序在运行(cc或者在被执行)的状态。也就是说,当你打开一个程序使它在电脑上运行的时候,那个程序就是处于运行时刻。在一些编程语言中,把某些可以重用的程序或者实例打包或者重建成为“运行库"。这些实例可以在它们运行的时候被链接或者被任何程序调用。

一般下载JDK后JRE将会默认下载 我个人感觉可以理解JDK是人 JRE就是人需要的氧气

什么是JRE?

JRE(Java Runtime Enviroment) 是Java的运行环境.面向Java程序的使用者.如果仅仅下载并安装了JRE,那么我们的系统只能运行JAVA程序.JRE是运行Java程序所须环境的集合,包含JVM标准实现及Java核心类库.它包括了Java虚拟机,Java平台核心类和支持文件.它不包含开发工具(编译器,调试器等)

二.Java三大特性(封装 继承 多态)  小卓目前是初学 多为引用知识  之后会持续输入个人理解 望与诸君共学习 共进步

什么是使用setter和getter 方法来访问?  (不够详细待补充)

setter方法

1.可以限制和检验传入的参数

2.隐藏对象内部数据结构

3.保持对象在每个状态的完整性

getter方法

1.按照客户的期望返回格式化数据

2.控制服务的顺序

什么是setter 和 getter?

(引用"奔跑的蜗牛"大佬的笔记)

  • getter 是一种获得属性值的方法,setter是一种设置属性值的方法
  • getter负责查询值,它不带任何参数,setter则负责设置键值,值是以参数的形式传递,在他的函数体中,一切的return都是无效的
  • get/set访问器不是对象的属性,而是属性的特性,特性只有内部才用,因此在javaScript中不能直接访问他们,为了表示特性是内部值用两队中括号括起来表示如[[Value]]
  • 对象的属性又可分为对象属性和访问器属性(参考资料: https://www.cnblogs.com/absolute-child/p/7188417.html)

什么是耦合?

耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象

来自大佬的三大特性详解 

建议二者都参考一下

Java类的三大特性总结_sweet的博客-优快云博客_java三大特性

Java三大特性详解_码农博客-优快云博客_java 三大特性

1.封装(Encapsulation)

就一句话  工程师写好的代码(理解成造出来一个工具) 但是留了一个接口(理解称给了使用说明书)  我们直接调用(会使用工具就好 不需要知道如何造这个工具)

封装指的是属性的私有化.是面向对象的重要原则,就是把对象的属性和操作结合为一个独立的整体,并尽可能隐藏对象内部实现细节.  仅对外开放接口. 注解(属性:用来描述具体某个对象的特征。描述的是对象的状态信息,通常以变量的形式进行定义。)

封装的作用

1.提高了程序的可复用性和可维护性,降低了程序员保持数据域操作内容的负担

2.封装特性同时可以将私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性,提高可控性

3.增强安全性

4.提高重用性

缺点:将变量等使用private修饰,或者封装进方法内,使其不能直接访问,增加了访问步骤与难度

2.继承

继承是什么?(以下三句话仅仅帮助理解此概念  )

1.继承就是子类继承父类的特征和行为,使得子类对象具有父类的实例和方法,或子类从父类继承方法,使子类具有父类相同的行为. 子类会具有父类的特性,但是同时具有自己的特性

2.换句话说就是将多个属性和方法提取出来,新建一个父类.Java中一个类只能继承一个父类,且只能继承访问权限非privat的属性和方法,子类可以重写父类中的方法,命名与父类同名的属性

3.在 Java 中,一个类可以由其他类派生。如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。

利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为超类(super class),派生类称为子类(subclass)。

对象:对象使类的一个实例,有状态和行为.

类(class):类是一个模板,它描述一类对象的行为和状态

继承的作用

1.提高了代码复用性

2.使类与类之间产生联系,给多态提供了前提

缺点:代码独立性变差

3.多态

什么时多态?(以下提供的话为了加深对多态理解)

1.多态分成两种:

设计时多态:即重载,是允许Java允许方法名相同而参数不同(返回值也可以相同也可以不同)

运行时多态:即重写,是指Java运行根据调用该方法的类型决定调用那个方法.

2.多态是同一个行为具有多个不同表现形式或形态的能力.

多态就是同一个接口,使用不同实例而执行不同操作

多态时对象多种表现形式的体现

多态的作用(增加代码的灵活度)?

优点:1.消除类型之间的耦合关系

2.可替换

3.可扩充

4.接口

5.灵活

6.简化

多态存在的必要条件

继承  重写 (运行时多态:即重写,是指Java运行根据调用该方法的类型决定调用那个方法.)   父类引用指向子类对象

Java的子类不能继承父类的构造器

三.什么是OOP?

OOP(Object Oriented Programming) 即面向对象程序设计 ,本质是以建立模型体现出来的抽象思维过程和面向对象的方法.

OOP = 对象 + 类 + 继承 + 多态 + 消息 

面向对象程序设计以对象为核心,该方法认为程序由一系列对象组成。是对现实世界的抽象,包括表示静态属性的数据和对数据的操作,对象是类的实例化对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。在面向对象的程序设计中,对象是组成程序的基本模块。

OOP共有的特点: 封装性  继承性   多态性

封装性  封装的最基本单位是对象

封装是指将一个计算机系统中的数据以及与这个数据相关的一切操作语言(即描述每一个对象的属性以及其行为的程序代码)组装到一起,一并封装在一个有机的实体中,把它们封装在一个“模块”中,也就是一个类中,为软件结构的相关部件所具有的模块性提供良好的基础。

https://baike.baidu.com/item/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1/24792https://baike.baidu.com/item/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1/24792https://baike.baidu.com/item/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1/24792

2、继承性:

继承性是面向对象技术中的另外一个重要特点,其主要指的是两种或者两种以上的类之间的联系与区别。继承,顾名思义,是后者延续前者的某些方面的特点,而在面向对象技术则是指一个对象针对于另一个对象的某些独有的特点、能力进行复制或者延续。如果按照继承源进行划分,则可以分为单继承(一个对象仅仅从另外一个对象中继承其相应的特点)与多继承(一个对象可以同时从另外两个或者两个以上的对象中继承所需要的特点与能力,并且不会发生冲突等现象);如果从继承中包含的内容进行划分,则继承可以分为四类,分别为取代继承(一个对象在继承另一个对象的能力与特点之后将父对象进行取代)、包含继承(一个对象在将另一个对象的能力与特点进行完全的继承之后,又继承了其他对象所包含的相应内容,结果导致这个对象所具有的能力与特点大于等于父对象,实现了对于父对象的包含)、受限继承、特化继承。

补充(

什么是面向过程?什么又是面向对象? ( 详细可以看看大佬的解释

面向对象是以功能来划分问题,而不是步骤

什么是面向对象?(通俗易懂) - BWH_Steven - 博客园https://www.cnblogs.com/ideal-20/p/11050146.html

什么是面向对象?(通俗易懂) - BWH_Steven - 博客园https://www.cnblogs.com/ideal-20/p/11050146.html

)

面向过程——步骤化

  • 面向过程就是分析出实现需求所需要的步骤,通过函数(方法)一步一步实现这些步骤,接着依次调用即可

面向对象——行为化(概念相对抽象,可结合下面的例子理解)

  • 面向对象是把整个需求按照特点、功能划分,将这些存在共性的部分封装成类(类实例化后才是对象),创建了对象不是为了完成某一个步骤,而是描述某个事物在解决问题的步骤中的行为

)

什么是静态语言什么叫动态语言?

静态类型语言中,变量的类型必须先声明,同时在之后的使用中,只能赋相对应类型的"值"

动态类型的语言,我们将什么类型的数据赋值给变量,这个变量就是什么类型

常见的动态类型语言:1.PHP 2.Python

常见的静态类型语言:1.C 2.C++ 3.Java

什么是强类型语言和弱类型语言?

强弱类型区分在于是否发生隐式转换.

例子:一个int类型的数据与一个float类型的数据相加,最终的结果是一个float类型的数据,这个过程就发生了隐式类型转换,int类型数据首先被转成float类型,然后与另一个float进行操作,这便是相相关类型之间隐式转换

这样划分强类型语言是一种强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就死该数据类型。 而弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过现行强制转换。 强类型语言包括:Java、.net、Python、C++等语言。

1、 面向对象的基本特征。 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势, 2、 Java的基本数据类型都有什么?String是基本数据类型吗? 基本数据类型包括int、short、byte、double、boolean、char、long、float String不是基本数据类型,是引用数据类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值