很久没有写博客了,,大四狗真的好忙,大学也快毕业啦,疫情期间,在家里忙着弄毕设,之后会定时更新博客😁
武汉加油!!!中国加油!!!java
Java于1990年末由Sun公司的詹姆斯高斯林团队开发,原名Oak;1995年改名为JAVA;后于2009年被Oracle公司收购。Java的三个方向:JAVASE;JAVAEE;JAVAME。网络
面向对象,跨平台等。函数
跨平台指的是跨操做系统,常见的操做系统有Windows,Linux,MacOS等操做系统。Java号称一次编译,处处执行,那么Java语言是如何实现跨平台的呢?缘由就在于Java引入了JVM机制,JVM(Java Virtual Machine )即Java虚拟机。JVM是Java跨平台的核心,Java程序通过编译后生成字节码文件,而后字节码文件会加载到JVM上运行将字节码文件翻译为操做系统能够理解的指令,JVM机制很好的屏蔽了底层操做系统的差别性,这样就实现了Java的跨平台。值得注意的是,Java是跨平台的,可是JVM不是跨平台的,不一样的操做系统有不一样的JVM,JVM是一个机制,不一样的公司会研发本身的JVM,如IBM等大型公司都有本身的JVM,目前市面上最多见的仍是Sun公司的HotSpot版本。this
Java内置了已经定义好的关键字编码
用于定义数据类型的关键字 | |||||
---|---|---|---|---|---|
class | interface | byte | short | int | long |
float | double | char | boolean | void | enum |
用于定义数据类型值的关键字 | |||||
true | false | null | |||
用于定义流程控制的关键字 | |||||
if | else | switch | case | default | while |
do | for | break | continue | return | |
用于定义访问权限修饰符的关键字 | |||||
private | protected | public | |||
用于定义类、函数、变量修饰符的关键字 | |||||
abstract | final | static | synchronized | ||
用于定义类与类之间关系的关键字 | |||||
extends | implements | ||||
用于定义创建实例、判断实例的关键字 | |||||
new | this | super | instanceof | ||
用于异常处理的关键字 | |||||
try | catch | finally | throw | throws | |
用于包的关键字 | |||||
package | import | ||||
其余修饰符关键字 | |||||
native | strictfp | transient | volatile | assert |
二进制操作系统
码表翻译
编码 | 描述 | 占用字节 |
---|---|---|
Latin-1 也叫ASCII或ISO8859-1 | 只有英文、数字、常见符号 历史上出现最先的码表 | 一个字符占用一个字节 |
GB2312 | 兼容Latin-1 在Latin-1的基础上增长了经常使用汉字 由中国国家标准定义 | 一个字符占用两个字节 |
GBK | 兼容GB2312,增长了更多的汉字 由中国国家标准定义 | 一个字符占用两个字节 |
unicode编码 | 是一种映射规则,将全世界全部的字符都对应到一个数字上 | 只是为每一个符号指定了一个编码,并无指定如何映射成二进制 |
Utf-16/utf-32 | 兼容latin1 是unicode编码的实现,占用2/4个字节 | 将unicode定义的符号对应的数字转为定长二进制来表明该符号 java语言的底层使用utf-16来表明字符 |
Utf-8 | 兼容latin1 是unicode编码的实现,是一种变长的编码形式,用1至4个字节来表示符号,经常使用符号用1个字节表示,次经常使用符号用2个字节,很是用符号用3个字节表示,极特殊符号用4个字节表示。 其中汉字在utf-8码表中占3个字节。 | 将unicode定义的符号对应的数字转为变长二进制来表明该符号,节省空间,一般在将数据写出磁盘 经过网络发送等操做时优先使用utf-8 |
Java提供了八种基本数据类型,分别为:code
类型 | 所占字节 | 默认值 | 取值范围(有效位) | 备注 |
---|---|---|---|---|
byte(字节型) | 1 | 0 | -2^7 ~ 2^7-1(-128 ~ 127) | |
short(短整型) | 2 | 0 | -2^15 ~ 2^15-1 | |
int(整型) | 4 | 0 | -2^31 ~ 2^31-1 | 全部整数类型的默认值都是int类型 |
long(长整型) | 8 | 0 | -2^63 ~ 2^63-1 | 声明时需在数据后面加一个字母l或L做为标记 |
float(单精度浮点型) | 4 | 0.0 | 7~8位 | 声明时须要在数据后面加一个字母f或F做为标记 |
double(双精度浮点型) | 8 | 0.0 | 16~17位 | 浮点型默认值都是double类型 |
char(字符型) | 2 | \u0000 | ||
boolean(布尔类型) | 1 | false |
除了基本数据类型,其余类型都是引用数据类型,如String,类等。对象
自动类型转换(隐式转换)utf-8
数值类型转换:byte --> short --> int --> long --> float --> double
字符类型转换:char --> int --> long --> float --> double
public class TypeChange { public static void main(String[] args) { byte b1 = 18; // 自动类型转换 // 数值类型转换 short s1 = b1; System.out.println(s1); // 18 int i1 = b1; System.out.println(i1); // 18 long l1 = b1; System.out.println(l1); // 18 float f1 = b1; System.out.println(f1); // 18.0 double d1 = b1; System.out.println(d1); // 18.0 // 字符类型转换 char c1 = 'a'; int i2 = c1; System.out.println(i2); // 97 long l2 = c1; System.out.println(l2); // 97 float f2 = c1; System.out.println(f2); // 97.0 double d2 = c1; System.out.println(d2); // 97.0 } }
强制类型转换(显示转换)
格式: 数据类型 变量名 = (数据类型)数据;
若是是浮点类型强转为整型,会直接舍弃小数部分;
强转以后,值可能会形成精度丢失。
// 强制类型转换 int i1 = 120; byte b1 = (byte) i1; System.out.println(b1); // 120 double d1 = 12.25; int i2 = (int) d1; System.out.println(i2); // 12 int i3 = 128; byte b2 = (byte) i3; System.out.println(b2); // -128
类型转换图:
为何int类型的128转为byte类型时,会变成-128?缘由以下:
运算结果向精度高的方向靠齐
符号左边为变量,而且要先初始化后才能执行运算
只针对boolean类型的值做运算,结果也是boolean类型
& :与运算,同真则为真
|:或运算,有真则为真
!:非运算,对结果进行取反
^:异或运算,不一样为真,相同为假
&&:短路与运算,结果与&运算相同,区别在于,当&&左边表达式为false时,右边表达式不须要再进行计算
||:短路或运算,结果与|运算相同,区别在于,当||左边表达式为true时,右边表达式不须要再进行计算
基于二进制运算
表达式 ? 表达式1 :表达式2
知足表达式吗?知足执行表达式1,不知足执行表达式2
if语句
switch语句
switch(表达式){ case 值1: 语句体1; break; case 值2: 语句体2; break; case 值3: 语句体3; break; .... default: 语句体n+1; break; }
switch语句表达式支持byte、short、int、char,从jdk1.5开始支持枚举类型,从jdk1.7开始自持String类型;case值是常量且不能重复;java中支持省略break,出现case穿透效果;java支持省略default;switch语句结束的标志:碰见break结束;执行倒代码最后一行。
for循环
for(初始值;判断条件;控制条件){ 循环体; }
while循环
初始值 while(判断条件){ 循环体; 控制条件; }
dowhile循环
初始值; do{ 循环体; 控制条件; }while(判断条件);