Java基础知识点
Java语言是一种优秀的编程语言,由C语言、C++语言发展而来。Java语言提供了一些有效的新特性,使得使用Java比C++更容易写出“无错代码”。
Java特性和优点
-  面向对象编程的思想,更简单有效,Java省略了C++语言中所有难以理解的部分,例如头文件、指针、结构、单元等等。 
-  可移植性,跨平台,“一次编写,到处运行”。 Java程序实际上没有直接和操作系统打交道,而是在JVM虚拟机(用C++语言实现的位于操作系统之下的虚拟的计算机)上运行的,JVM屏蔽了不同操作系统之间的差异。 
-  高性能,Java是一种解释型语言,所以其执行效率相对C/C++语言来说会慢一些,但它并不是完全的解释型,而是一种解释型和编译型的折中。 使用Java语言编写程序,首先使用编译软件或集成开发环境编写源程序,再使用Java编译器进行一次伪编译,将源程序编译成为中间码(字节码文件.class),最后再使用Java解释器进行解释。 这一手段使得其性能得到提高。 
-  分布式计算,Java语言拥有强大的、易于使用的连网能力,Java应用程序可以像访问本地文件系统那样通过URL访问远程对象。 
-  动态性,反射机制,在Java语言中可以简单直观的查询运行时的信息,也可以将新代码加入到正在运行的程序中去。 
-  多线程,Java语言的多线程处理能力使得程序能够具有更好的交互性、实时性。 
-  安全性,Java语言在设计之初就在安全性方面考虑很仔细,通过Java可以构建出防病毒、防篡改的系统。 
-  健壮性,Java拥有异常机制,垃圾清理机制。 Java语言在伪编译阶段做了许多潜在问题的检查,由于省略了指针与内存管理,避免了很多在程序运行时才能被发现的问题。 此外,Java提供了对内存的自动管理,程序员无需在程序中进行分配、释放内存。 
Java三大版本
JavaSE:标准版(桌面程序、控制台开发……)
JavaME:嵌入式开发(手机、家电……)
JavaEE:E企业级开发(web端、服务器开发……)
了解JDK、JRE、JVM
JDK:Java Development Kit
JRE:Java Runtime Environment
JVM:Java Virtual Machine

Java基础语法
01-注释、标识符、关键字
-  注释:书写注释是一个很好的习惯,注释不会被执行,目的是让人看懂 Java中的三种注释: - 单行注释://注释
- 多行注释:/* 注释 */
- 文档注释: /** 注释 */
 
-  标识符:程序员自主命名的符号,类名、变量名、常量名、接口名、方法名等等 命名规则与规范: - 只能由数字、字母(包括中文)、下划线、美元符号组成
- 不以数字开头
- 关键字不做标识符
- 严格区分大小写
- 见明知意
- 接口与类名:每个单词首字母大写
- 变量名与方法名:第一个单词首字母小写,第二个单词开始首字母大写
- 常量名:所有字母大写,单词与单词间采用下划线衔接
 
-  关键字:SUN公司提前定义好的具有特殊含义的单词  
02-数据类型
数据类型用来声明变量,程序在运行过程中根据不同的数据类型分配不同大小的空间。
数据类型分为两大类:基本类型(primitive type)和引用类型(reference type)
-  基本数据类型 数值类型 占字节 取值范围 默认 整数型 byte(字节型) 1 [-27~27-1] 0 short(短整型) 2 [-215~215-1] 0 int(整型) 4 [-231~231-1] 0 long(长整型) 8 [-263~263-1] 0L 浮点型 float(单精度) 4 [-231~231-1] 0.0f double(双精度) 8 [-263~263-1] 0.0 字符型 char(字符型) 2 [0~216-1] ‘\u0000’ 布尔类型 boolean(布尔型) 1 true、false false 
-  引用数据类型 类(如字符串类String)、接口、数组 其实Java中除了8种基本数据类型之外,其余的都属于引用数据类型 
-  补充 bit:位,一个二进制码0/1,是计算机内部数据存储的最小单位 byte:字节,B,1B=8bit,是计算机内部数据处理的基本单位 1024B=1KB 1024KB=1M 1024MB=1G (210=1024) 
-  扩展 整数扩展:Java中不同进制的表示 //二进制 int i1=0b10; //八进制 int i2=010; //十进制 int i3=10; //十六进制 int i4=0x10;输出结果:  浮点数扩展:大小有限,结果会舍入误差,有时接近但不相等,因此最好完全避免使用浮点数进行比较。使用BigDecimal,Java语言的一种数学工具类。 字符扩展:ASCII码,采用1B进行存储,所有的字符本质还是数字 字符 十进制 二进制 0 48 0011 0001 A 65 0100 0001 a 97 0110 0001 转义字符: \t 制表符 \n 换行符 
03-类型转换
8种基本数据类型中,除了boolean类型不能转换,其余七种都可以转换。多种不同类型的数据在做运算时,要先转换为同一种数据类型(容量最大的那一种)。
byte、short、char类型在做混合运算时要先各自转换成int类型。
如果int类型没有超出byte、short、char的取值范围,可以直接赋值给这三种类型的变量。
-  自动类型转换:小容量向大容量转换 
-  强制类型转换:大容量向小容量转换,编写时必须添加“强制类型转换符” 语法:(转换后的数据类型)转换前的数据类型变量名; 强制类型转换在运行时可能出现精度损失、内存溢出等问题。 
int a=10_0000_0000;//数字间可以用下划线隔开
int b=20;
long ab1=a*b;//内存溢出,运算过程是int型,运算后已经溢出了
long ab2=(long)a*b;//在运算前转换,运算过程一直是long型
long ab3=a*(long)b;
输出结果:

04-变量、常量
-  变量:内存中存储数据的最基本单元 -  变量三要素:变量名、变量类型、作用域(值,内容空间复用) 
-  变量声明: 语法:数据类型 变量名 注意:变量必须先声明,再赋值,最后才能访问;  变量可以重复赋值,但不可重复声明。 
-  变量的作用: -  未声明变量的情况: System.out.println(100); System.out.println(100);输出结果都为100,但分别占用不同的内存空间。 
-  已声明变量的情况: int i=100; System.out.println(i); System.out.println(i);输出结果都为100,但两者占用相同的内存空间,实现了内存空间复用,节省开销。 
 
-  
-  理解作用域:根据声明变量的位置进行划分 - 类变量(静态变量):在方法体之外声明的变量,类加载时初始化并分配空间;
- 实例变量:在方法体之外声明的变量,构造方法执行时、创建对象时分配空间。从属于对象
- 局部变量:在方法体之内声明的变量,方法执行过程中分配空间。局部变量只在当前方法体中有效,在使用局部变量前必须初始化(赋初始值),在方法体执行结束后局部变量会释放空间。
  由上图可知,局部变量开辟的是栈空间,而栈空间不会对变量进行初始化,所以我们要给局部变量赋初始值。 堆空间会对变量进行初始化,自动给变量赋数据类型默认值,方法区相当于是堆空间,也会进行初始化。 
 
-  
-  常量:初始化后不能再被改变值,使用修饰符final。 语法:final 数据类型 常量名 = 初始值; 
05-运算符Operator
| 算术运算符 | + , - , * , / (取商) , % (取余,模运算) , ++ , - - | 
| 赋值运算符 | = , += , -= , *= , /= , %= , ^= , &= , |= , <<= , >>= | 
| 关系运算符 | > , < , >= , <= , == , != , instanceof | 
| 逻辑运算符 | & , | , ! , &&(短路与) , ||(短路或) | 
| 位运算符 | & , | , ^ (异或) , ~ (取反) , >> (右移1位相当于除以2), << (左移1位相当于×2) | 
| 条件运算符 | 布尔表达式 ? 表达式1 : 表达式2(布尔表达式为true时执行表达式1,否则执行表达式2) | 
| 其他 | new | 
注意:
- 变量名++,变量名- -,表示变量先赋值后自增
- ++变量名,- -变量名,表示变量先自增后赋值
06-包机制Package、JavaDoc
-  包机制:为了更好的组织类,Java提供包机制,用于区别类名的命名空间,相当于文件夹。一般利用企业域名倒置作为包名,要使用其他包下的类时,需要使用import语句导入相应的包。 
-  JavaDoc:JavaDoc命令是用来生成自己API文档的,写在类的前面就是该类的注释,写在方法的前面就是该方法的注释。 参数信息: - @author 作者
- @version 版本号
- @since 指明需要使用的最早的jdk版本
- @param 参数名
- @return 返回情况
- @throws 异常抛出情况
 
如有错误,感谢指正!










