java简述以及基本数据类型
java开发环境 JDK(java development kit 翻译过来就是java开发套件)
就是一套集成开发环境,没它你编写的代码是没办法运行的,目前来说比较常用的LTS(long time support)版本是jdk8,所以我也选择了jdk8
环境变量 : 这玩意咋解释呢 就是系统中的变量
JAVA_HOME jdk安装目录
PATH 在后面追加 jdk安装目录下的bin目录
CLASSPATH jdk1.5 以后无需配置 配置后反而可能出现问题
集成开发工具 IDE(Integrated Development Environment)
我推荐使用 IDEA 用了都说爽。全称 IntelliJ IDEA,来自JetBrains公司。
java简述
对于java的历史说真的我没啥兴趣,就不多说了
java 是面向对象语言 最小单位是类 class java中所有的执行语句方法都必须放在类中。
main函数 入口函数 目前对我来说就是一个固定写法 public static void main(String [] args){}
java 最根本上来说是编译型语言
java的源程序需要经过 javac 的编译,编译成一种只有java虚拟机 jvm 能理解的一种中间码。
java又可以称为解释型语言,因为 javac 编译成的中间码只有 jvm 能解释。
java 源文件拓展名为 .java
如果一个class使用public来修饰 那么这个类的类名和文件名必须一致。
一个java源文件中可以有多个类 但public类只允许有一个。不建议一个文件包含多个类。
java严格区分大小写 文件 方法 类 引入 变量
路径中的空格 ? 这是啥 为啥在路径里添加空格
标识符 凡是你在程序里自己定义的 名称 都是标识符
标识符 只能包含 字母 数字 下划线 美元符号 但不可以以数字开头
分隔符 ; {} () [] . 空格
关键字 不建议背 但是你用的时候要会写
关键字就是被java赋予了含义的词 你不能和java抢名称用啊
数据类型
java作为强类型语言 就要符合强类型语言的特点
所有的变量必须先定义再使用
变量只能存储与之匹配的类型的值
基本数据类型
byte(8) char(16) short(16) int(32) long(64) float(32) double(64)
基本数据类型:简单点来说都是存储的数字,数字要分正负java的基本数据类型不支持无符号。
这表示如 byte 占8位第一位要存储符号就是正负,byte 最大正数是 2 的7次方减1,负数最大是 2的7次方。
为啥负数比正数多一个?我自己考虑就是 0 被划分到了正数,这也影响了某些运算比如补码这只是我自己考虑的没有深究。
定义变量
byte a = 1;
short b = 2;
int c = 3;
long d = 4L;
float e = 3.14F;
double f = 3.1415D;
char g = '你';
boolean h = true;
进制
2进制 8进制 10进制 16进制 这玩意是基础不多说
int a = 0B1011; //11 二进制
int b = 01011; //521 八进制
int c = 1011; //1011 十进制
int d = 0X1011; //4113 16进制
字符串 char 这玩意可不好弄 先讲一些概念
Unicode这个东西叫字符集 基本包括了世界上所有的语言
Unicode很大,能够基本包含世界上所有的语言,最开始Unicode使用2字节表示,后来发现这远远不够,现在使用4字节表示。
Unicode只是给出了字符与之对应的编号,但没有要求怎么存储这些编号,U-TF8、UTF-16、UTF-32就是对编号存储的实现。
出现最早的是UTF-16这也是java使用的字符集,它是一个变长字符集2byte或4byte。
目前公认最好的、最多的是UTF-8,它也是变长字符集。
UTF-32是一个定长的字符集,即使值存储一个英文字母也占32位。它的编码速度很快,但占用空间太多。目前基本上很少使用。
中文 -> uft8 他依照的规则就是Unicode
类型转换
隐式转换
数据范围从小到大 java会自动帮你隐式转换
为啥 byte a = 100 能赋值成功了?明明是大类型转小类型。
因为编辑器帮我们做了,编辑器首先会确认这个值是否能存的下。如果可以就会自动帮你加上类型转换。
byte a = 100; 等价于 byte a = (byte)100;
强制转换 可能会丢失数据
byte 最大为 127 如果你用int 类型的 1000 强制转为 byte 那就会出问题。
至于具体1000会变成多少就没必要深究了,已经错了错多错少没意义。
double a = 3.1415926535;
int b = (int)a;
System.out.println(b); // 输出3 小数位都被舍去了
运算符
运算符这个东西掌握不好优先级容易出问题,最简单的办法就是不知道谁的优先级更高的时候用括号,提升优先级。
因为涉及到太多符号故 以 `` 引起了的才是真正的符号。同一级别下左侧优先级更高,这里的左侧主要意思是程序在一行里是从左向右执行的。
一级: .
()
[]
这是一级 就是最高级
二级: -
++
--
~
!
这里都是一元运算符 -
表示的是负数 要理解一元的意思 可能还会有 +
这玩意我感觉可能用不到
三级: *
/
%
四级: +
-
这里是二元运算
五级: <<
>>
>>>
这里的 >>>
是忽略符号的位移
六级: >
<
>=
<=
七级: ==
!=
八级: &
|
^
位运算符 左侧优先级更高
九级: &&
||
逻辑运算符 左侧优先级更高
十级: ?:
三目运算符
十一级: 赋值运算符 全部 =
+=
-=
>>=
<<=
*=
等等
今天就先到这了,可能有写的不对或者不好的地方,欢迎指正。