基础概念
java简介
Java是由SUN公司在1995年推出的一门高级编程语言
是现今服务器端的首选编程语言
是大数据的基础语言
跨平台
所有的Java程序并不是直接和操作系统交互而是先交由JVM进行翻译,然后JVM将程序翻译为当前操作系统能够理解的语言之后再交由操作系统执行
JDK JRE JVM
所有的Java程序并不是直接和操作系统交互而是先交由JVM进行翻译,然后JVM将程序翻译为当前操作系统能够理解的语言之后再交由操作系统执行
JDK — Java Development Kit,Java开发工具包,包含了工具包 + JRE
JRE — Java Runtime Environment,Java运行时环境,包含了JVM + 核心类库
JVM — Java Virtual Machine,java虚拟机
java版本(扩展):LTS - long time service
小知识点
- class文件名和类名对应,在运行的时候要写的是class文件名
- 用public限制的类称之为公共类,要求类名和Java文件名必须一致
- cmd操作
运行:Java 包名.类名 java.base.Demo
编译:
环境变量
指给当前的操作系统来指定运行参数的值
JAVA_HOME=JDK的安装路径
Path=%JAVA_HOME%\bin;
关键字
在Java中有特殊的含义。
到目前为止一共是53个关键字 — 2个关键字没有使用:const/goto — 保留字
注意:关键字都是小写的
标识符
程序中自定义的名称
命名规则
由字母(常见语言的基本字符)、数字、_、
组
成
(
但
是
减
少
使
用
组成(但是减少使用
组成(但是减少使用)
虽然java支持中文命名,但是减少使用
数字不能开头
不能使用关键字
区分大小写 Demo demo
见名知意
驼峰命名法
类名/接口名:如果由多个单词组成,那么每一个单词的首字母大写。 HelloWorld
变量名/方法名:如果由多个单词组成,那么第一个单词的首字母小写,其余单词的首字母大写 playGame main
包名:如果由多个单词组成,那么每一个单词之间用 . 隔开,所有字母都是小写 cn.tedu.de
常量名:如果由多个单词组成,那么每一个单词之间用_隔开,所有字母都是大写 PLAY_GAME
字面量
在计算机中不可改变的量
整数常量:所有的整数 7 15 186 -42
小数常量:所有的小数 3.12 8.005 6.0 9.00
字符常量:将一个字母、数字或者是符号用 ‘’ 标识起来 ‘a’ ‘+’ ‘5’ ‘小’ ‘ ’
字符串常量:将一个或者多个字符用 “” 标识起来 “abc” “+” “”
布尔常量:true/false — 用于表示逻辑值
空常量:null
注释
用于解释说明的文字
// 注释文字 单行注释
/* 注释文字 / 多行注释
/* 注释文字 */ 文档注释 — 里面的注释内容可以利用javadoc命令提取出来形成文档(就是对程序的说明书)
字面量
在计算机中不可改变的量
整数常量:所有的整数 7 15 186 -42
小数常量:所有的小数 3.12 8.005 6.0 9.00
字符常量:将一个字母、数字或者是符号用 ‘’ 标识起来 ‘a’ ‘+’ ‘5’ ‘小’ ‘ ’
字符串常量:将一个或者多个字符用 “” 标识起来 “abc” “+” “”
布尔常量:true/false — 用于表示逻辑值
空常量:null
进制
计数方式
二进制:0-1,满2进1 以0b/0B开头
八进制:0-7,满8进1 要求以0开头标记一个八进制数字
十进制:0-9,满10进1 Java中数字默认就是十进制
十六进制:0-9,A-F,满16进1 9+1=a a+1=b f+1=10 39+1=3a 3f+1=40 99+1=9a 9f+1=a0 af+1=b0 ff+1=100要求以0x/0X作为开头标记
进制的转换
十进制转其他进制
十进制转化为其他进制:十进制数字向哪个进制转化那么久除以对应的进制,然后取余数,将余数倒排
其他进制转化为十进制:从这个进制的数字的低位次开始,然后按位次乘以当前的进制的位次次幂,最后求和
二进制转八进制:三变一
八进制转二进制:一变三
二进制和十六进制同和八进制一样
扩展:十进制小数转换为二进制
绝大部分的小数转化为二进制都是无限的 — 所以计算机在存储小数的时候会产生舍入误差,因为计算机的位数有限
数据类型
基本数据类型
数值型
整数型
byte - 字节型 - 1个字节 -> 27~27-1 -> -128~127
byte b = 25; byte b2 = 127; byte b3 = -128;
short - 短整型 - 2个字节 - -215~215-1 -> -32768~32767
short s = 800; short s2 = 1500;
int - 整型 - 4个字节 - -231~231-1 -> -2.1×109 ~2.1×109 - Java中,整数默认为int类型
int i = 5;
long - 长整型 - 8个字节 - -263~263-1 -> -1018~1018 需要以L/l作为结尾标记
long l = 54L;
浮点型
float - 单精度 - 4个字节 -> -1038~1038 - 需要以f/F作为结尾
double - 双精度 - 8个字节 -> -10308~10308 Java中小数默认为double类型 - 小数结尾可以添加D/d作为标记
double d = 4.5; double d2 = 2.58; double d3 = 9.54D;
char - 字符型 - 2个字节 -> 0~65535 - 存储用的就是utf-16
char c = ‘a’; char c2 = ‘\ua4f3’; char c3 = ‘中’;
转义字符
\t-制表符 table \r-回车 return \n-换行 next
\-反斜杠 \ \’-单引号 \”-双引号
扩展:将字符转换数字的过程称之为编码 — 编码表
ISO-8859-1 - 西欧码表 - 1个字节表示1个字符 a
gb2312 - 国标码 - gbk - 2个字节表示1个字符 - 收录了常见的简体汉字以及一部分常见的繁体汉字
Unicode编码体系 - 收录了世界上常见语言的基本字符 - 规定了一系列的编码规则 - utf-8-> 3个字节表示一个字符 utf-16 -> 2个字节表示1个字符
注意:规定无论哪张码表兼容西欧码表
数据类型的转换
自动类型转换/隐式转换
规律一:小的类型自动转化为大的类型
规律二:整数类型可以自动转化为浮点类型,可能会产生舍入误差
规律三:字符可以自动提升为整数
强制类型转换/显式转换
规律一:当把大的类型转化为小的类型的时候,因为补码的换算问题,所以可能会产生一些想不到数据
规律二:小数在转化为整数的时候是舍弃小数位
扩展:数据的原反补三码
数据类型的最高位是符号位 — 如果最高位是0,则表示一个正数;如果最高位是1,则表示一个负数。
计算机中存储的是数据的补码,计算的也是数据的补码
十进制转二进制计算出来的二进制数字是数据的原码
如果是正数,那么原反补三码一致
注意:规定用-0表示当前类型的最小值
一个byte由八个位组成,如00000000,其中,前7位表示数值,第8位是符号位(0为正,1为负)。这样+1就是00000001,-1就是10000001。最大的正数就是0 1111111,即2^0+2^1+……+2^6=127;最小的负数,同理,为1 1111111,即-127。
到这里应该是许多人不明白的地方,为什么负数会到-128。
上述的描述会出现一个问题,就是0,会出现一个+0和一个-0。印度人他们规定-0为-128,这样就与计算机的补码(程序都是按补码运行的)完美的结合在一起。
以此类推,int,short,long都可以推出他们的取值范围。
注意:
- byte/short/char在运算的时候自动提升为int
- 整型在运算的时候保持类型不变
- 小类型和大类型运算,结果一定是大类型
- 任意整数/0 - ArithmeticException - 算术异常
任意非零数字/0.0 任意非零小数/0 - Infinity - 无穷大
0/0.0 0.0/0.0 0.0/0 - NaN - Not a Number - 非数字