疯狂java讲义中的知识点01

疯狂java讲义01

(出处:根据李刚老师《疯狂java讲义》视频中的知识点于此记录下来)

(1~16集文档)

编程语言的运行原理:

编译型的语言

如:C,C++
1、编译生成的目标程序(针对特定平台的机器指令),只能在特定的平台上运行。不能跨平台
2、性能好

解释型的语言

如Ruby、Python
1、需要为不同的平台提供解释器。通常它们可以跨平台运行。
2、由于每次运行时,都需要经过一次解释(转换为机器指令)。性能略差。

java希望即利用编译性语言性能好的特点、又想跨平台。

Java语言既有编译(不彻底的编译,编译成字节码文件),又有解释(每次运行时,将字节码翻译成对应平台的机器指令)

Java的性能很好,也能跨平台。

【面试题】 JVM(虚拟机)原理是什么?

Java源程序编译之后生成的是字节码文件(平台无关的),不同平台上的JVM是不同的,
不同平台JVM负责将字节码文件解释对应平台的机器指令,这样过程即可实现Java程序的跨平台。

类加载机制:反射。
内存管理:GC。
JVM代码解析、处理引擎。

【面试题】 JVM和JRE

JRE = JVM + 各种基础类库 + Java类库(String\System)

安装JDK

无论学习什么编程语言,都需要安装Software Developing Kit (SDK)
Java的SDK简称JDK

需要javac、java命令。

安装JDK的两个注意点:

(1)不需要安装JRE。
(2)不要把JDK安装在有空格的路劲下、不要安装在有中文的路径下。

安装完成后,得到如下目录结构:

bin:包含java、javac两个命令。
jre:jdk自带JRE。
lib:包含JDK的工具jar包。
src.zip:包含Java SE的源代码。

配置环境变量:

PATH:告诉操作系统到哪些路径去找类。
路径1;路径2;路径3

结论:希望在命令行使用的工具,都应该将这些工具【所在路径】添加PATH环境变量中即可。

%JAVA_HOME%/bin 其中%JAVA_HOME%引用已有的JAVA_HOME环境变量的路径

Linux、MacOS: J A V A H O M E / b i n , 其 中 JAVA_HOME/bin,其中 JAVAHOME/binJAVA_HOME引用已有的JAVA_HOME环境变量的路径。

JAVA_HOME:告诉Eclipse、Tomcat、Ant、Maven、CXF、AspectJ、Activiti…JDK安装在哪个目录。
即使你有多个JDK,你想用哪个JDK,就让JAVA_HOME指向哪个JDK。

CLASSPATH:告诉JRE到哪些路径去找类。
暂时不用配置!如果你不配置CLASSPATH,JAVA默认到当前目录下找类。

(显示后缀功能如果被关闭,电脑中毒了)

================================================

java程序的入门

java程序的最小程序单元是类
[public] class 类名
{

}
Java源程序的命名规则:

A:源程序必须以.java为后缀
B:源文件中有public类,主文件名必须与public类的类名相同
一个Java源文件只能有一个public类。但其他类可以有很多个

常用的命令:

cd:进入指定目录。win、linux通用。
dir/ls:列出当前目录下所有文件和子目录。
mkdir/md:创建文件夹

windows和linux常用特殊目录:

. :当前目录
… :上一级目录
/ : 根目录

=============================================

编译java程序

javac -d <目录> 源文件 :-d指定将生成的“字节码文件” 放到指定位置

字节码文件的命令规则为:
A 后缀名是 .class
B 主文件名总是与类名相同
一个java源文件中定义了几个类,编译时就会生成几个class文件

运行java程序

java 类名 : 系统到CLASSPATH指定路径下去找类

java -cp 目录1;目录2;目录3 :系统到cp选项所指定的系列目录下去找类
简而言之:-cp选项用于覆盖CLASSPATH环境的值

java要求一个类(并不要求是public类)必须有main方法才可以运行
main方法就是程序的入口
public static void main(String[] args)

===============================================

java程序的注释

java注释分成3种:

单行注释:
// 注释内容

多行注释:
/*
注释内容
*/

文档注释:
/**

*/

javadoc工具可以提取源程序中类之前、成员变量之前、方法之前、构造器之前、内部类之前的文档注释来生成API文档

文档注释:javadoc工具可以提取文档注释来生成API文档

Eclipse、AndroidStudio可以在编辑界面实时正在使用的成员的文档注释

API文档:为Java类提供的使用说明书。
文档注释:文档注释只有放在类、成员变量、方法、构造器、内部类之前才有意义!

javadoc默认提取public和protected成员之前的文档注释。

生成文档注释:

javadoc -d <目录> 源文件 : -d 指定将生成的“API文档”放到指定位置。

========================================================

【备注】 javadoc工具默认只提取public、protected修饰的之前的文档注释

API文档:类的使用说明书

JDK的API文档:JDK1.8API\api目录下,打开index.html

命令格式:
javadoc -d 目录 源程序

-d 目录:指定将生成的文档放到哪个目录下

文档注释中的特殊标志:@param 参数名 对参数的说明

===============================================

变量

  • 变量?用于“装”数据的
    形象来说,变量就相当于一个容器

    无论学习任何编程语言,永远都是从变量开始学的

    java是“强类型”的语言:

    • 所有的变量必须先声明、后使用
    • 指定类型的变量,只能装对应类型的数据

    强类型特别费劲,强类型语言更安全

声明变量(定义变量)

类型 变量名 [= 初始值];

标识符:
  • 标识符:就是名字

    标识符:可为变量、类、方法…各种各样的东西起名字 标识符的规则:

    • 由字母(英文、中文、日文、韩文),数字,下划线__,$组成,但数字不能开头
    • 不能是java的关键字 或保留字

    关键字:java语言中一些有特殊意义的单词。关键字的所有字母都是小写。(48个)
    保留字:暂时还没有使用,以后可能使用的关键字:goto、const。(2个)
    直接量:true、false、null

    一共有53个单词不能作为标识符

====================================

类型:

java类型:基本类型、引用类型

基本类型:

整型 (byte、short、int、long)
浮点型 (float、double)
字符型 (char)
boolean型(boolean)

整型:

位 (bit) :要么是0,要么是1.
字节(byte):8个bit

2^0=o 2^4=16 2^5=32 2^6=64 2^7=128 2^8=256

2^9=512 2^10=1024(k) 2^11=2048 2^12=4096 2^16=65536

2^20=M(百万million) 2^30=G(十亿) 2^40=T

byte: 8位(能表示256个数)、取值范围:-128~127(加上0)
short: 16位(能表示65536个数) 取值范围:-32768~32767
int: 32位(能表示4G个数)、取值范围:-2G~2G-1
long: 64位(取值范围很大,无需记忆)

注意点:
A:你直接给出一个整数,整数默认是int型。
如果该整数值较小、且直接赋值给byte或short,java也可以将它当成byte、short处理

B:如果你直接给出一个巨大的整数,java不会自动把它当成long型处理。
如果希望java把该整数当成long处理,需要在整数后添加L或l(小L)后缀

C:整数一共有4种表现形式:

十进制:

八进制:以0开头
逢8进1,只能出现0~7。

十六进制:以0X开头或0x开头
逢16进1,只能出现09,af(a代表10,b代表11)

二进制:以0B开头或0b开头
逢2进1只能出现0~1

十六进制的数,在编程中非常常用,每位十六进制的数,恰好换算成4位二进制数,因此非常方便。

============================================================

浮点型:

只能装带小数部分的数。

java的浮点型,一共有2个:

float:4个字节(32位):取值更大
double:8个字节(64位):取值超大

Q1:编程时应该用float?还是double?为什么?

A1:应该用double。
浮点数都有精度丢失,但float丢失更严重。
因为现在的内存已经非常便宜,出于精度考虑,应该使用double。

浮点型的注意点:
A:直接给出一个浮点值,默认是double型。
如果你希望一个浮点值被当成float处理,必须在浮点值添加F或f。

B:浮点数会有精度丢失。
所以浮点数比较时,应该用“差值法”。

C:浮点数有两种表现形式:

– 小数形式
– 科学计数法。 数eN = 数 * 10^N
只要用科学计数法,就一定是浮点数,不可能是整数。

D:浮点值有3个特殊值:
浮点数除以0,得到无穷大。
正无穷大:正正得正,负负得正
负无穷大:正负得负

【 所有正无穷大都相等:所有负无穷大都相等 】
非数:浮点0除以0,对负数开方,得到的就是非数,NaN (Not a Number)
【 非数与任何数都不相等,与它自己都不相等】

======================================================================

字符型:

只能装单个字符(英文、中文、日文、韩文……),且单个字符要放在单引号里。

char:2个字节(16位置)

字符型的注意点:

A:字符型有3种变现形式:

  • 单引号里放普通的字符。

  • 单引号里放特殊的转义字符。

  • 用字符的Unicode编号。十六进制

B:字符完全可以当成无符号整数使用。
字符当成无符号整数使用时,其实就是用该字符的编号

java类型可以分为2大类:数值型(整型、浮点型、字符型)

/******************

字符集:为了在计算机底层保存字符,为所有字符编号,

需要保存字符时,实际上保存该字符的编号(二进制)
读取字符内容时,读取是二进制的编号,还需要参照编号表才能得到对应的字符。

ASCII:只支持英文、数字、标点符号。
a-z: 97-97+25;
A-Z: 65-90;
0-9:48-57
\r:13 \n:10 ’: 39 (单引号的编号为39) " :34(双引号的编号为34)

GB2312:简体中文字符集
GBK:简体中文字符集
GB18030:目前简体的字符集

所谓字符集:就是为所有的字符编号。保存文件所用的字符集,和读取

=============================================================

布尔型:

boolean:只能接受true或false

类型转换:
所有数值型(7种)都可以自动转换

自动转换:取值范围小的,可以自动转取值范围大的

byte→short(-32768~32767)→int→long→float→double
char(0~65535)→int

推论:
所有整型,都可以自动转成浮点型
所有整型,都可以自动转成long型
所有数值型,都可以自动转成double型

强制转化:
上图中反过来转换,就需要强制转换
(类型)

-浮点数转整数,始终是砍掉小数部分
-强制转换,可能发生“溢出”
溢出规则:用该数-目标类型的大小*n,保证减出的差位于取值范围内
(n是倍数)

表达式类型的自动提升:

整个表达式的类型,与该表达式中最高等级的操作数的类型相同

===================================================

运算符

算数运算符

+、-、*、\、%(求余)
++、–

++:将单个变量的值加1.
放在变量之后,表示先用变量的值,再自加;
放在变量之前,表示先自加,再用变量的值;

–:将单个变量的值减1;
放在变量之后,表示先用变量的值,再自减;
放在变量之前,表示先自减,再用变量的值;

对于一些更复杂的运算,应该使用Math类,该类提供了一些工具方法,可以完成初中、高中数学运算

赋值运算符:=

=左边只能是变量
=右边可以是任何复杂的表达式
大部分时候,=右边往往都是复杂的表达式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_L_J_H_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值