Java基础


java
程序:是为了模拟现实世界,解决现实问题,而使用计算机语言编写的指令集合。

Java语言的特点
1.面向对象(封装,继承,多态);
2.平台无关性( Java 虚拟机实现平台无关性,一次编译,到处运行);
3.简单易学(与C语言的面向过程相比,Java的面向对象更接近人的语言习惯);
4. 安全性,可靠性(Java中没有指针,程序员无法直接操作内存,而是把操作权限交给Java虚拟机,使程序不容易出现不容易出现内存泄漏和内存溢出问题。);
5.支持多线程( C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 java的lang包提供一个Thread类本身就支持多线程);
6. 编译与解释并存(Java编译生成字节码文件,交给Java虚拟机解释);
面向对象与面向过程对比
我们都知道Java的核心思想是面向对象,Java中万事万物皆对象
(1).面向过程

优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点: 没有面向对象易维护、易复用、易扩展。
(2).面向对象

优点: 易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
缺点: 性能比面向过程低。
从编程语言的角度而言,应该分为两种:
· 编译型:如果学习过C的同学应该知道,编译之后会形成出一个*.exe的文件;
· 解释型:像ASP语言那样,直接将代码放到服务器上进行解释。
但是Java本身却属于两种类型的集合,观察图形:

通过如上的图形可以发现,任何一个*.java程序首先必须经过编译,编译之后会形成一个*.class的文件(字节码文件),而后在电脑上执行的不是*.java,而是编译之后的*.class文件(这个文件可以理解为“加密”的文件),但是解释程序的电脑并不是一台真正意义上的电脑,而是一台由软件和硬件模拟出来的电脑 —— Java虚拟机。

Java程序的执行过程
java源文件,编译器(javac命令)进行编译
生成class文件(存放的字节码)
然后解析器(执行java命令)解析class文件
最后生成计算机识别的二进制编码
JDK、JRE、JVM之间的区别与关系
JDK:(Java Development Kit)即java的开发与运行环境,他除了包含完整的JRE之外,还包含了供开发者使用的工具包。
JRE:(Java Runtime Environment)即Java运行环境,非开发者只需要安装 JRE来运行程序, 它包含java运行的所需的类库+JVM(java虚拟机)。
JVM: (Java Virtual Machine) 即Java虚拟机, 当我们运行一个程序时,JVM 负责将字节码转换为特定机器代码,JVM 提供了内存管理/垃圾回收和安全机制等。这种独立于硬件和操作系统,正是 java 程序可以一次编写多处执行的原因。
三者之间的关系
作为程序员,就必须安装JDK,因为其中包含Java开发工具包,同时也包含了JRE。
作为使用者,运行已经开发好的Java程序,只需要安装JRE。
JVM和JRE的关系:JRE包含了JVM,JVM是运行Java程序的核心虚拟机,同时也包含了Java程序所需的环境支持
总结:JDK>JRE>JVM

什么是Java环境变量?

环境变量的意义
让java bin目录下的工具,可以在任意目录下运行,原理是将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
JAVA_HOME
    它指向jdk的安装目录,引用%JAVA_HOME%即可,避免每次引用都输入很长的路径串,方便第三方软件引用约定好的JAVA_HOME变量,保证程序正常运行。
Path环境变量
设置Path环境变量之后就可以在任何目录下执行javac/java等工具命令了。 系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。
ClassPath
如果指定了classpath,那么会在指定的目录下查找要运行的类文件(JDK1.5后不需要配置)

javac命令和java命令做什么事情呢?
java运行分两部分:一个是编译,一个是运行。
javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。编译后生成class文件。
java:负责运行的部分.会启动jvm虚拟机,加载运行时所需的类库,并对class文件进行执行.

一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数.
什么是字节码,采用字节码的好处是什么
首先我们来谈谈Java文件类型,一共有两种:
扩展名为Java,Java的源文件,编译之前的纯文本文件,用来储存Java源代码。
扩展名为class,Java 的类文件,编译之后的二进制文件,存储的是字节码。
就是说编译后的.class文件存储就是字节码*。
采用字节码的最大好处: 可以实现一次编译到处运行,也就是java的与平台无关性,它依靠不同平台的Java虚拟机将编译后的字节码解释成具体平台上的机器指令执行。
JDK的安装与配置
如果要进行Java的程序开发,必须有JDK的支持,JDK指的是Java的开发工具
对于Java程序开发而言,主要会使用JDK的两个命令:javac.exe、java.exe。但是这些命令由于不属于windows自己的命令,所以要想使用,就需要进行路径配置。
Java Application命令行参数:
Java Application是使用命令行来执行的,命令行参数将被保存在main()方法的参数arg[ ]中。参数arg[ ]是一个String类的对象数组。通常使用对象数组的首元素arg[0]存放第一个参数,以此类推。
public static
void main ( String arg[ ] ) {
}
第一个Java程序:永远的“Hello World !”(重点)
第一个要测试的程序永远从“Hello World !”开始,Java程序的文件后缀必须是*.java。
范例:定义一个新的文件:Hello.java
public class Hello {         public static void main(String args[]) {                   System.out.println(“Hello World !”) ;         }}
当一个*.java程序编写完成之后,可以按照如下的步骤执行:
· 编译程序,通过命令行进入到程序所在的路径,执行:javac Hello.java,形成“Hello.class”(字节码);
· 解释程序,对生成的Hello.class在JVM上执行,输入:java Hello。
第一个程序解释(重点)
第一个程序编写完成之后,下面来对此程序的组成进行说明:
1、 关于类的定义:
所有的java程序一定要被类所管理,那么定义类的格式如下:
[public] class 类名称 {}
对于类的定义现在就有了两种形式:
· public class定义:类名称必须和文件名称保持一致,在一个*.java之中只能有一个public class;
· class定义:类名称可以和文件名称不一致,但是生成的是class定义的名称,在一个*.java程序之中可以同时存在多个class的定义,编译之后会分为不同的*.class文件;
2、 主方法
主方法表示的是一个程序起点,要放在一个类之中,主方法定义格式如下:
public static void main(String args[]) {}
这些字母的组成是完全固定的,今天先记住,以后进行完整的讲解。
额外声明:日后主方法所在的类都将其称为主类,一般主类都使用public class声明。
3、 系统输出
可以直接在屏幕上显示输出信息,操作语法:
输出后加换行: System.out.println(输出内容) ;
输出后不加换行: System.out.print(输出内容) ;
这个基本的格式是Java程序运行的基本结构,一定要记下来。
修饰符:常见如public, protected, private, static, abstract, final,用于指定数据、方法、类的属性以及它们的用法。
类:是Java的基本结构,一个程序可以包含一个或多个类,一个Java源文件里最多只有一个公有类。
main方法:Java解释器通过调用main方法执行应用程序。
编程风格:
良好的编程风格有利于减少错误,产生容易阅读、易于理解的代码。类和方法前使用文档注释,方法步骤前使用行注释;变量和方法名使用小写,如果有多个单词,第一个单词首字母小写,其他单词首字母大写;类名的每个单词的首字母大写;常量使用大写,单词间以下划线分割。
Java常见错误类型:
包括语法错误,即在编译期间产生的错误;运行时错误,导致程序非正常终止的错误;逻辑错误,程序不能按预期的方式执行,编译不会报错。
java中常用的数学函数:
Math.random方法生成[0.0,1.0)之间的double类型的随机数,可以用它写出简单的表达式来生成任意范围的随机数,一般地,a + (int)(Math.random() * b)返回[a, a+b);还可以用该方法生成随机字符,Java中每个字符对应一个Unicode编码从0000到FFFF,在生成一个随机字符,就是产生一个0到65535之间的随机数,所以计算的表达式为(int)(Math.random() * (65535+1))。生成任意2个字符ch 1和ch2(ch1 < ch2)之间的随机字符,
(char)(ch1 + (int)(Math.random() * (ch2 - ch1 + 1)))
字符串类型
String类型是不可变的,其内容是不可修改的
equals方法用于比较两个字符串是否包含相同的内容。
equalsIngoreCase忽略大小写比较内容是否相同。
regionMatch比较部分内容是否相同。
startsWith判断是否以某个字符串开始。
endsWith判断是否以某个字符串结束。
compareTo方法用于比较两个字符串的大小,即第一个不同字符的差值.
调用length()方法可以获取字符串的长度。。
charAt(index)方法可以获取指定位置的字符,index必须位于0到s.length()-1之间。
concat()方法用于连接两个字符串,连接操作返回一个新的字符串。
indexOf返回字符串中字符或字符串匹配的位置,返回-1表示未找到。indexOf指定第二个参数表示从指定的位置开始查找。
toCharArray将字符串转换成字符数组。valueOf方法将基本数据类型转换为字符串,例如转化为字符串,如
String s1 = String.valueOf(1.0); String s2 = String.valueOf(true);;字符串转换为基本数据类型,Double.parseDouble(str)等。

欢迎使用Markdown编辑器

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

居中的图片: Alt

居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
Single backticks'Isn't this fun?'‘Isn’t this fun?’
Quotes"Isn't this fun?"“Isn’t this fun?”
Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值