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 异常抛出情况
如有错误,感谢指正!