JAVA基础(一)--- 基础语法篇

很久没有写博客了,,大四狗真的好忙,大学也快毕业啦,疫情期间,在家里忙着弄毕设,之后会定时更新博客😁
武汉加油!!!中国加油!!!java

1、JAVA概述

一、概述

Java于1990年末由Sun公司的詹姆斯高斯林团队开发,原名Oak;1995年改名为JAVA;后于2009年被Oracle公司收购。Java的三个方向:JAVASE;JAVAEE;JAVAME。网络

二、Java语言的特色

面向对象,跨平台等。函数

三、跨平台,Java为何能够跨平台?

跨平台指的是跨操做系统,常见的操做系统有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跨平台示意图

2、基础知识

一、关键字

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

三、引用 常量 变量 直接量

  • 引用:经过引用来表示数据的值
  • 常量:引用不会发生改变的量
  • 变量:在程序中引用指向的值能够发生变化量
  • 直接量(字面值):在程序中能够直接使用就称之为直接量(字面量)

3、数据类型

一、基本数据类型

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?缘由以下:

    强转精度丢失问题

4、运算符

一、算术运算符

运算结果向精度高的方向靠齐

  • 求和:+
  • 求差:-
  • 求积:*
  • 求商:/
  • 取余:%
  • 自增、自减:++、--

二、赋值运算符

符号左边为变量,而且要先初始化后才能执行运算

三、关系运算符

只针对boolean类型的值做运算,结果也是boolean类型

  • & :与运算,同真则为真

  • |:或运算,有真则为真

  • !:非运算,对结果进行取反

  • ^:异或运算,不一样为真,相同为假

  • &&:短路与运算,结果与&运算相同,区别在于,当&&左边表达式为false时,右边表达式不须要再进行计算

  • ||:短路或运算,结果与|运算相同,区别在于,当||左边表达式为true时,右边表达式不须要再进行计算

四、位运算

基于二进制运算

  • &
  • |
  • ~ :取反
  • ^
  • <<:左移,左移使数据增大
  • >>:右移,右移使数据减少
  • >>>:无符号右移

五、三目运算符

表达式 ? 表达式1 :表达式2

知足表达式吗?知足执行表达式1,不知足执行表达式2

5、流程控制语句

一、选择结构

  • 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结束;执行倒代码最后一行。

    switch语句

二、循环结构

  • for循环

    for(初始值;判断条件;控制条件){
        循环体;
    }
  • while循环

    初始值
    while(判断条件){
      循环体;
      控制条件;
    }
  • dowhile循环

    初始值;
    do{
      循环体;
      控制条件;
    }while(判断条件);

循环结构

相关文章
相关标签/搜索