JavaSE学习笔记-Day1
笔者是一名大二在读本科生,最近闲着无聊重拾起Java这门语言,看了些许教学视频后居然还觉得挺有意思,“情不知所起,一往而深”。于是决心认真学习这门语言!由于身居科班,自然不是零基础,hai,也差不多吧,精修的C语言,选修的Java,又加之时间的打磨和沉淀,哦,看来是负基础呀…所以呢,更要认真学习了!笔者承诺每天更新学习笔记,算是监督和督促自己的学习吧!要把自己每天学习的知识都整理、理解、总结,并记录下来。好!从今天开始啦!
一. Java平台的三大版本
- JavaSE(Java Standard Edition):标准版,定位在个人计算机上的应用。这是Java平台的核心。
- JavaEE(Java Enterprise Edition):企业版,定位在服务器端的应用。
- *JavaME(Java Micro Edition):微型版,定位在消费性电子产品的应用上。
二. Java的特点和优势
跨平台性
这是Java的核心优势!啥意思呢,举个例子,电脑上的应用软件发送到手机上,能在手机上使用吗?答案是不能的,原因是它们的操作系统不一样,电脑上的是windows,而手机上是安卓,这种现象就是没有跨平台性。Java语言的跨平台性,跨就是不区分的意思,平台就是操作系统,跨平台就是不区分操作系统,所以Java程序只要编写一次无论在哪个操作系统,都能运行。实现这个特性的功劳就是Java虚拟机,英文是Java Virtual Machine简称JVM。如图所示,不同的操作系统有不同的虚拟机,Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。Java虚拟机是实现跨平台的核心机制。按我自己的理解,打个比方Java是一种新型人类语言,JVM就像是一个强大的翻译,它会所有的语言,中文、英文、日语等等(这就类比于不同的操作系统),当遇到什么语言不通时,它都能翻译转化成双方都懂的,这样不就横行于世界了?(实现了跨平台性)
注意:由上图可知,Java虚拟机本身不具备跨平台性,每个操作系统下都有不同版本的虚拟机,具有跨平台性的是借助虚拟机实现的Java程序。其他特点:面向对象,安全性,简单性,高性能,分布式,多线程,健壮性等。这些呢随着学习的深入会有理解的。
三. JVM、JRE、JDK的介绍
刚才已经介绍了JVM——Java实现跨平台机制的核心,还需要了解其他两个概念:
- JRE( Java Runtime Environment )是Java程序运行时的环境,包含:Java虚拟机、库函数、运行Java应用程序所必须的文件。
- JDK(Java Development Kit)是Java程序开发工具包,包含:JRE,以及增加编译器和调试器等用于程序开发的文件。
如图是它们之间的关系:
我们想运行一个已有的Java程序,只需要安装JRE;
但是如果想开发新的Java程序,必须要安装JDK。
学到这,本来还应该有JDK安装和cmd操作的,由于比较了解就不打算记了。
四. Java程序的运行机制
计算机高级语言的类型主要有编译型和解释型两种,而Java 语言是两种类型的结合(既编译又解释)。
Java首先利用文本编辑器编写 Java源程序,源文件的后缀名为.java;再利用编译器(javac)将源程序编译成字节码文件,字节码文件的后缀名为.class; 最后利用虚拟机(解释器,java)解释执行。
具体过程如图所示:
五. 初识包这个概念
我写代码呢肯定不是用记事本了,用的IDE是eclipse。在安装的时候都会让你选择一个文件夹来作为工作空间(就是存储Java文件的地方,存的东西很杂),为了让自己写的程序可以在以后复习中快速找到,并且从一开始就有一个好的编写习惯,所以呢先大概说说包这个思想,后面学的更多时才具体阐述。
集成开发环境(IDE,Integrated Development Environment)是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。总之呢,它的功能很强大,现阶段就当它是敲代码的软件吧。
先来说个具体例子:假设你的电脑上有一大堆视频,学习视频、篮球锦集、小电影呀等等的,你全随意存放,那要想看kobe高光时刻的时候,你怎么办?慢慢找啊,多费事又费神呀。但是如果你按分类把这些视频都放到指定的文件夹下面是不是就很方便了,下次想看什么类型的就去指定的地方找,多好!而我们的Java程序也是一个道理,我们都靠文件夹的形式整理起来,不同的Java程序放在不同的文件夹里,以后自己想看看自己的代码也方便不少呀。
这种靠文件夹的管理我们就可以等效为包管理。写程序的时候,我们不用自己去建立文件夹,也不用每次都按照步骤打开对应文件夹然后新建.java文件,只用在每个Java程序的首行,我们写上package ***(代表着想存在哪个文件夹的文件夹名)。
格式基本上是:package 文件名1.文件名2. ···文件名n;
意思是文件2在文件1里,文件n在文件n-1里···以此类推,最终Java程序就会被存在文件n中。
举个例子:package cn.zjb;
最终Java程序会被放在zjb文件夹里。以后在写程序的时候都要放在包里,这是种规范!
六. 第一个Java程序
有了前面这些概念做铺垫,我们不管三七二十一,先来感受一下Java的基本格式和写代码的快乐。毕竟学习这类课程还是自己敲着敲着就有那么点感脚了。
按照国际惯例,计算机语言编写的第一个程序是“Hello World!”,咱们也来敲一下。
package cn.zjb;public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World!");}
}
wow,成功了,可以打印诶!
然后我们发现,HelloWorld.java文件存在了src文件夹下的cn文件夹下的zjb文件夹下面。另外,Java_Learning就是我们选择存储的工作空间。
我们又发现,HelloWorld.class文件存在了bin文件夹下的cn文件夹下的zjb文件夹下面。好了,这下程序就被我们管理好啦!
注意和规范:
- Java对大小写敏感
例如:
String[] ; System.out.println ; - class: 类
一个文件可以有多个类;但一个文件的所有类只能有一个public类(前面有public修饰的);编译时一个类对应一个.class文件(字节码文件)。
public类名要与文件名一致,大小写也一定要一致! - mian方法是程序入口,最好写在public类中。解释字节码文件是从main函数开始的,有固定的写法,public static void main(String[] args){ }
- ; () {} “” , 等符号都是英文半角的!
- 修改java源程序必须要重新编译(不能直接解释运行),一定要重新生成新的.class文件 。
- 如果还是用记事本写的话,源文件最好把拓展名都显示出来,一定保证java文件名的后缀名是.java。
- 在Java中,用花括号划分程序的各个部分,任何超过一句话的整体代码都必须以“{”开始,以“}”结束,编译器忽略空格。
- Java中每个语句必须以分号结束,回车不是语句的结束标志。
- 括号、引号成对写比较好,再往里面填内容。
现在我们发现了一些端倪,Java是基于类写代码的(类是主体),再往类里面加东西!不同于C语言哦。
因此我们从上述这个结构入手,先来学学类的概念,也就是先有个总体的框架意识。不过在学类之前,我们必须还要了解Java的另一大特性:面向对象。这是学习类的基础!
七. 面向过程和面向对象思想
- 两种思想概述
面向过程(Procedure Oriented)和面向对象(Object Oriented,OO)都是一种软件分析、设计、开发的思想。两种思想都贯穿与软件分析、设计、开发的各个阶段。
Java的思想就是基于面向对象的,相对应面向对象就分别成为面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP)。 - 两种思想的产生
面向过程的产生很简单,就是对应着人们遇见一件事情的第一反应——怎么去一步一步实现它。其实,所有简单的问题都是这样去处理的!说白了,编程思想不过就是人的思想的另一种形式。
举个例子:我想开车,那肯定就需要一步一步来啊,先打火、再挂挡、然后踩油门、最后车子不就发动起来了嘛!这就是面向过程思想的体现,“按步骤来解决问题”。
但是,当问题的规模和复杂度变大时,面向过程的思想显然不是人的最佳思想,比方说:我要造一辆汽车,这个问题还能按步骤进行吗?要是硬说可以!也没问题!先造轮胎、再造框架、然后造发动机…但是为什么不能先造发动机、再造框架…呢?肯定也可以啊!但是再回到之前说的,编程思想是人的思想,自己想想,造车问题的第一反应会按步骤进行吗?不可能啊,肯定是想车由哪些部件构成对吧,再造这些部件(这就是对象),还可以同时造,增加效率,所有这不是单纯只按步骤就能完成好的问题!
面向对象就是这样产生的,它用于解决复杂问题(可协作完成的问题),不同于面向过程是解决简单问题的。因此,面向对象可以帮助我们从宏观上把握、从整体上分析整个系统。 但是,具体到实现部分的微观操作(就是一个个方法步骤),仍然需要面向过程的思路去处理。 - 两种思想的联系
相辅相成!不对立!面向对象肯定也离不开面向过程!其实所有问题都可以面向过程,但是对于复杂点的问题显然不是最优解! - 面向对象的优势
维护性比较好。啥意思呢,比方说造车的吧,哪里有问题就去找对应生产商,显然解决问题快且方便,但是面向过程不一样,你得从步骤的第一步开始找一直到出错的地方,显然,解决问题慢且效率低。
面向对象具有三大特征:封装性、继承性和多态性。(这些特性随着学习的深入会有更深的理解)
而面向过程没有继承性和多态性,并且面向过程的封装只是封装功能,而面向对象可以封装数据和功能。 - 面向对象的小别扭
个人感觉在解决非常简单的问题时候,本来用面向过程解决就很简单(即在主函数写几句话就可以的,像HelloWorld程序),但是如果用面向对象思想,就需要去写一个没有任何意义的类,然后把main方法“包装”起来,自我感觉就这里稍微缺失了面向对象的意义。
不过有个奇特的想法,要是直接在main方法里写所有的代码,是不是就退化成面向过程了呢,嘻嘻…这么想好像也没啥别扭的了!复杂问题终究还是要简化成简单问题来处理的。
八. 类和对象
- 类和对象的概念
类 : class
对象 : Object或者 instance(实例),所以说 对象就是实例,是一个东西,很多时候用实例来说反而更好理解。 - 类和对象的关系
难说,理解起来还行,举个例子:有两个生物出现在你的面前,一个人,一个猴子,(这里其实就已经引进类的概念了),怎么区分他们呢?依靠属性(外貌等特点)和行为来区分呗!
这里,这个具体的人和具体的猴子就是对象(实例),而人、猴子这种概念就是类。说白了,类就是对象(实例)的抽象,类是具有某种特定属性和行为的集合,类就是个模板!对象就是实例!总而言之,对象是具体事物,类是对象的抽象。
个人感觉,类像是一种更强大的数据类型,类就像是C语言中结构体的进化版本! - 怎么去定义一个类(写代码)
其实之前的HelloWorld程序已经有啦,具体语法如下:
[public] [abstract|final] class 类名 [extends 类名'] [implements 接口名]{// 属性(成员变量)部分// 构造方法部分//方法部分 }
备注:
[]意思是可写可不写(看要求);
| 意思是或;
//后面的就是往里面填的“东西”。
所以说,最简单类的写法就是:class A{}。
- 定义一个类的注意事项
定义一个类,一般由三部分组成(肯定不能写其他语句),这三个部分都称为成员:属性field(也叫成员变量)、构造方法constructor(也叫构造器)、方法method,这三种成员都可以定义零个或多个;
PS:后面深入学习
类是一个抽象的集合,里面肯定不能写具体实现的语句(这里的类里不包括方法内部),这些应该写在相应的方法里。 - 类名的规范:
1)类名要以下划线、美元符号或字母开头,最好以字母开头;
2)类名取名要有意义;
3)类名每个单词的首字母要大写(驼峰原则);
4)类名不能以关键字取名;
5)类名不能包含任何嵌入的空格或点号以及除了下划线和美元符号字符之外的特殊字符。 - 怎么创建一个类的对象
具体语法如下;
类名 对象名=new 构造方法;
以后看见new这个关键字就是在创建对象!
总结:
写在最后:和大家分享一下我的学习资源https://www.sxt.cn/Java_jQuery_in_action/History_Direction.html
我的学习框架可能和教材的结构不一样,是我自己在负基础上的理解,可能就只适合我自己,哈哈。
JavaSE学习笔记-Day1相关推荐
- 【JavaSE学习笔记】
JavaSE学习笔记 一.java的基本语法 变量运算规则 编码情况1中l后面没有加L,默认是int变量 编码情况2中b1=b+1中的1默认是int型变量,会出错 string类型 string里面可 ...
- JavaSE学习笔记(持续更新)
这里写目录标题 JavaSE学习笔记(持续更新) Java跨平台原理与核心机制 1.跨平台原理: 2.两种核心机制: JDK11的安装流程 Java程序开发的三个步骤(无编辑器版) Eclipse安装 ...
- 重拾JavaSE学习笔记
重拾JavaSE学习笔记 1.常用DOS命令 2.了解Java 2.1 .java特性 2.2.JDK .JRE.JVM 2.3.java的加载和执行 3.开发环境搭建 3.1.安装jdk 3.2.配 ...
- javaSE学习笔记01 入门篇
javaSE学习笔记01 入门篇 java语言概述 Java背景知识 java是 美国 sun 公司 在1995年推出的一门计算机高级编程语言. java早期称为Oak(橡树),后期改名为Java. ...
- ELK搜索学习笔记--Day1
ELK搜索学习笔记–Day1 1. 课程简介 1.1 课程内容 ELK是包含但不限于Elasticsearch(简称es).Logstash.Kibana 三个开源软件的组成的一个整体.这三个软件合成 ...
- HCIA学习笔记day1
HCIA学习笔记day1 衡量网络优劣的几个标准: 带宽:在一段时间内,从一个点到另一个点的最大传输量 传输的数据量单位是比特 延迟:数据从一个点到达另一个点所经历的时间 200Mbps 单位是比特 ...
- 我的javaSE学习笔记
layout: post title: "我的JAVASE自学笔记" date: 2019-05-18 20:23:25 +0800 我的JAVASE自学笔记 作者:吴甜甜 个人博 ...
- JavaSE学习笔记(一)基础知识
本章包含内容有: java环境配置.注释.标识符.数据类型.类型转换.变量.常量.运算符.包机制.顺序结构.选择结构.循环结构.方法的定义和调用.命令行传参.可变参数. 点击这里查看更多JavaSE的 ...
- 【shaw学习笔记day1】Python21天+人工智能预科学习日记
Python数据类型及字符串字节串转换+概率论复习 这里是shaw,用于记录技术学习笔记和各类干货分享: 为记录学习生活和激励成长,开始这个专栏,希望自己日后可以坚持,初心不变. Python21天 ...
最新文章
- web.xml配置错误页面,及输出错误信息
- 理解原理的重要性 - 论PostgreSQL merge join 成本评估陷阱 含case
- SQL Server 个人手册
- 钉钉宜搭邵磊:钉钉宜搭低代码加速业务互联 让改变发生
- HTML <cite> 标签
- aqs java 简书,Java并发之AQS原理
- C++ STL中set底层实现方式
- http协议工作原理(精简)
- dos窗口运行.java文件
- 电路分析之正弦稳态电路的仿真与研究
- 计算机毕设人寿保险项目,2017年中国人寿集团在京各直属单位接收毕业生情况公示...
- 《计算机网络基础》笔记 -----应用层(六)
- 哈尔滨工业大学 计算机系统大作业
- ubuntu18.04 下海康工业相机hikrobot_camera的使用及问题的解决
- 穷不坑朋友,富不忘恩人!
- 个人微信小程序快速赚攻略
- 从零到英雄:资产商店发行人的故事
- 无法启动程序计算机丢失d,老毛桃处理win10系统提示无法启动程序计算机中丢失duilib_d.dll的恢复方法...
- 403,404,503等 HTTP状态码(HTTP Status Code)
- WPS文档究竟有多好,不服一起跑个分?