Java基础语法

你之因此能优于别人,正是由于你坚持了别人所不能坚持的。
本文相关代码在个人Github,欢迎Star~
https://github.com/zhangzhibo1014/DaBoJava

前言

俗话说 “工欲善其事,必先利其器” ,做为 Java 开发人员,不只要学习更多的技术栈,并且要时常回顾 Java 的基础。 Java 基础掌握的牢固,后续的开发也会变得相对 easy !下面一文讲述的是Java基础语法,对于刚入门的小白也很是适合哦!java

标识符

标识符: 如同人的姓名同样,在计算机程序中为常量,变量,类,方法等进行命名。git

命名规则:程序员

  • 数字字母下划线(_)美圆符号($)组成
  • 不能以数字开头
  • 不能为Java中的关键字
  • 严格区分大小写,不能包含空格
  • 能够为中文,但不推荐使用

PSgithub

  • 起名字的目的是为了让人们记住,因此最好作到(见名知意)。编程

    1.包名 - 全小写,多级中间用[.]分割,通常为域名的倒叙
        example: top.zhangzhibo
    2.类名/接口名 - 开头字母大写,多个单词每一个单词首字母都大写
        example: HelloWorld  Student
    3.方法名/变量 - 开头字母小写,多个单词从第二个单词开始首字母大写
        example: display()  setAge()  getAge()  name  firstName
    4.常量 - 每一个字母都大写,多个单词之间用下划线(_)分隔
        example: SCORE MAX_AGE
    5.项目名 - 每一个字母都小写,多个单词之间用(-)分隔
        example: demo java-demo
  • 尽可能采用驼峰式的命名方式数组

    example: 苹果 apple /  笔记本 noteBook

关键字

关键字:Java 语言赋予了特殊含义,用做专门用途的字符串。微信

  • 关键字不能做为标识符出现,可是能够是标识符其中的一部分。
  • example: int,long,double
    abstract assert boolean break byte case catch
    char class continue const default do double
    else extends enum final finally float for
    goto if implements import instanceof int interface
    long native new package private protected public
    return short static synchronized super strictfp this
    throw throws transient try void volatile while

注释

注释是用来对当前编写的代码进行解释,方便后续人员的维护。所以,咱们在编写代码的时候必定要书写注释,养成良好的编程习惯数据结构

Java中的注释有三种
1.单行注释
    // 我是注释的内容
2.多行注释
    /*
        你好呀!
        我是注释。
    */
3.文档注释,可使用javadoc生成文档
    /**
      * 我是文档注释。
      */

注意app

  • 被注释的文字不会被编译
  • 多行注释和文档注释不能嵌套使用!

数据类型

Java是强类型语言,对于每一种数据都须要定义明确的数据类型函数

  1. Java 中数据类型分为基本数据类型引用数据类型

    • 基本数据类型分为数值型(整型、浮点型)、字符型、布尔型,共8种.
      byte、short、char、int、long、float、double、boolean
    • 引用数据类型:类、数组、接口等(此处不过多介绍,后续会详细说明)
  2. 整型:用于表示没有小数部分的数值,它容许为负数。

    类型 存储空间 取值范围 默认值
    byte 1个字节 -128 ~ 127 0
    short 2个字节 -32768 ~ 32767 0
    int 4个字节 -2147483648 ~ 2147483647 0
    long 8个字节 -9223372036854775808 ~ 9223372036854775807 0

    注释

    int为整型的默认类型.
    在声明long类型变量时,须要数字末尾加上L/l. example: long l1 = 100L;
  3. 浮点型:用于表示有小数部分的数值

    类型 存储空间 取值范围 默认值
    float 4个字节 大约 ± 3.40282347E+38F(有效位数6 ~ 7位) 0.0
    double 8个字节 大约 ± 1.79769313486231570E+308(有效位数为15位) 0.0

    转义字符: 是Java中一种特殊的字符常量,转义字符以(\)开头后面接1个或多个字符。

    \t - 制表符,等同于TAB键
    \n - 换行符
    \\ - 表示\
    \" - 表示"
    \' - 表示'
    \0 - 表示空白字符

    注释

    double为浮点型的默认类型.
    在声明float变量时,需在数字末尾加上F/f. example: float f1 = 10.2F;
    浮点数值采用二进制系统表示,没法精确的表示1/10等,如不容许有偏差,请参照BigDecimal类.
  4. 字符型:char

    char: 字符型。占2个字节,默认值:'\u0000'
    不建议在程序中使用char类型。
  5. 布尔型:boolean

    boolean:布尔型。占1个字节,只有true和false两种取值。默认值:false
    整型和布尔型之间不能够相互转换

自动类型转换与强制类型转换

  1. 自动类型转换:精度小的数据类型到精度大的数据类型为自动类型转换

    basic1.png

    图中实线箭头表示无信息丢失的转换
       图中虚线箭头表示可能有精度损失的转换
    
       当两个数值在进行二元计算时:
       两个操做数中有一个是double类型,另外一个操做数就会转为double类型
       两个操做数中有一个是float类型,另外一个操做数就会转为float类型
       两个操做数中有一个是long类型,另外一个操做数就会转为long类型
       其他状况,都转为int类型计算

    注释

    char <-> int 字符型可与整型互相转换
       boolean不参与自动类型转换
       不能把对象类型转为不相关类的对象
       转换过程当中可能出现精度损失,浮点数到整数经过舍弃小数获得,而不是四舍五入
  2. 强制类型转换:把容量大的类型转为容量小的类型

    1).转换的类型必须是兼容的
    2).不建议强制类型转换,由于会损失精度
    3).从浮点型强制转为整型,会截断小数部分,仅保留整数部分(不是四舍五入)
        double x = 9.97;
        int nx = (int)x; // nx = 9

运算符

  1. 算数运算符

    +(正号)、-(负号)
    +(加)、-(减)、*(乘)、/(除)、%(取余)
    ++(自增)、--(自减)、+(链接符,用于链接两个字符串)
       % :最后的符号和被模数同样。example: a % b = ? 最后的符号和b的符号同样
       / :作除法运算时,最后的结果为整型。example: 5 / 2 = 2
           当除数为浮点类型时,结果为浮点类型. example: 5 / 2.0 = 2.5
       a++ : 在进行运算时,用a的值进行运算,最终a+1
       ++a : 在进行运算时,用a+1的值进行运算,最终a+1
       +: 链接符 example: "hello" + "world" = "helloworld"
  2. 关系运算符

    >(大于)、<(小于)
    >=(大于等于)、>=(小于等于)
    ==(等于)、!=(不等于)
    instanceof(检查是否为类的对象)
    关系运算符的最终结果为布尔型,要么为true,要么为false.
  3. 赋值运算符

    =、+=、-=、*=、/=、%=
        a += b :至关于 a = a + b
    最后结果的数据类型和左侧操做数的类型相同
    example: 
        int a = 2;
        a += 2.5; //等同于 a = (int)(a + 2.5);
  4. 逻辑运算符

    &(与)、|(或)
    &&(短路与)、||(短路或)
    !(非)
    &&和||两侧为boolean类型
        &&运算规则:两侧都为true结果为true
        ||运算规则:两侧都为false结果才为false
    &&与&的区别:&&在参与运算时,只要左侧为false,右侧则不参与运算,而&两侧都参与运算
    ||与|的区别:||在参与运算时,只要左侧为true,右侧则不参与运算,而|两侧都参与运算
  5. 位运算符

    &(按位与)、|(按位或)、^(按位异或,同为0,异为1)、~(取反)
    >>(右移位)、<<(左移位)、>>>(无符号右移)
    &和|两侧为数值型
        运算规则:将数字转为二进制,按位计算,位数少的左侧补0
                 左移至关于在此基础上乘2 example: 2 << 1 = 2 * 2
                 右移相关于在此基础上除2 example: 2 >> 1 = 2 / 2
  6. 三目运算符

    条件表达式 ? 表达式1 : 表达式2
        条件表达式结果为true,执行表达式1
        条件表达式结果为false,执行表达式2
        表达式1 与 表达式2 的类型必须一致!
  7. 注意

    相关计算:
    byte,short,char在进行运算时,优先会转为int类型进行运算。
    a += b 与 a = a + b 的区别:
        当byte,short,char进行运算时:
            byte += 2 -> 最后的类型为byte
            byte = byte + 2 -> 程序不能编译
            由于byte在参与运算时会以int类型计算
            因此int不能直接赋值给byte
            须要强制类型转化
            byte = (byte)byte + 2;

常量和变量

常量 : 在 Java 中用关键字 final 指示常量,常量一旦被赋值,不能被改变

类常量 : 在一个类的多个方法中使用,能够定义为类常量,用 static final 来设置一个常量

final double CIRCLE_R = 2.3;
static final double CIRCLE_R = 3.3;

变量 : 在程序中,其值能够被改变的。在声明一个变量时,必须对变量进行初始化,不能使用没被初始化的变量

int studentNumber = 20;
double area = 10;

流程控制

块做用域 : 即复合语句,指由一对大括号括起来的若干语句,块肯定了变量的做用域

public static void main(String[] args) {
    int n = 0;
    {
        int p = 4;  //只在此大括号内有效
    }
    System.out.println(p); //出错,找不到变量p
}

流程结构分为:顺序结构,选择结构,循环结构

  1. 顺序结构:自顶向下依次执行
  2. 选择结构:也叫分支结构。

    1.switch-case[-default] 用于处理多个选项的操做
        switch() 表达式可为char byte short int 等常量表达式,字符串(JDK1.7引入),枚举类型(JDK1.5引入)等
        case子句必须为常量
        default在没有对应case的状况下来执行的。为可选项
        case 和 default 后的语句可加break,用来跳出当前分支,执行后续语句,
        如没有break,则从匹配项开始如下向下执行,途中遇到break也会跳出当前分支。
    2.if, if-else, if-else if[-else]
      if - else if - else 中的条件最好有范围大道范围小去书写
      example: 
          int grade  = 80;
          if(grade > 80) {
            System.out.println("优秀");
          } else if (grade >= 60 && grade < 80) {
            System.out.println("中等");
          } else {
            System.out.println("不及格");
          }

    详细代码见Github~

  3. 循环结构

    1.while(条件表达式) 
    先判断是否符合条件,符合后执行循环体,若是开始不符合条件,则一次也不执行
    2.do-while(条件表达式); 注意分号
    先执行一次,在判断是否符合条件,符合后执行循环体,不论是否符合条件都会执行一次循环体
    3.for(,,)
    4.foreach - 加强for循环
    for(variable : collection) statement
    example: 
        for(int element : a) 
            System.out.println(element); //打印a集合中的元素
    
    循环结构中,每每都会有循环变量,用来控制循环的次数
    通常循环结构为:循环变量初始化,循环条件判断,循环变量自增
    循环条件为boolean类型
    
    break:用于结束当前循环(多重循环结束本层)
    continue:用于结束本次循环,开始下一次循环

    详细代码见Github~

数组

数组: 是一种数据结构,存储相同类型数据的集合。下面全部数据咱们都以 int 类型为例。

  1. 定义数组

    int[] numbers = null;
  2. 初始化

    静态初始化:int[] numbers = {1,2,3,4,5};
              int[] numbers = new int[] {1,2,3,4,5};
    动态初始化:int[] numbers = new int[5]; //定义一个长度为5的int类型的数组
    数据类型[] 数组名 = new 数据类型[长度]
  3. 数组的访问

    在数组中,能够采用数组名[下标|索引]的方式来访问数组中的元素
    全部数组的下标都从0开始,最后一个元素为数据的长度-1.
    Java中用length属性来获取数据的长度。
    int len = numbers.length;
  4. 数组的赋值

    咱们能够为数组中的每一位进行赋值
    numbers[0]=0;
    numbers[4]=4;
    当数组长度太多时,能够经过循环来进行赋值
    for(int i = 0; i < 100; i++) { 
        numbers[i] = i; 
    }
  5. 数组的遍历

    int[] numbers = new int[] {1,2,3,4,5};
    for (int i  : numbers) {
        System.out.println(i);
    }
  6. 数组拷贝

    在Java中,容许将一个数组变量拷贝给另外一个数组变量,这时两个变量都引用同一个数组
    example:
        int[] numbers = {1,2,3,4,5};
        int[] nums = numbers;
        
    Arrays.copyOf();也能实现,后续会说~

方法

Java中为了提升代码的复用性,能够将其定义成一个单独的功能,该功能的体现就是Java中的方法。

Java 中方法的格式:

访问控制符 返回值类型 函数名(参数类型1,形式参数1,参数类型2,形式参数2) {
    执行语句;
    return 返回值;
}

当函数没有具体返回值时,返回值类型为 void 关键字表示
若是函数的返回值类型是 void 时,return 语句能够省略不写,系统会自动添加
return 的做用:结束函数。

方法的做用

  1. 用于定义功能
  2. 用于封装代码提升代码的复用性

注意:方法中只用调用方法,不能定义方法

输入和输出

输入

为了增长后面示例程序的趣味性,须要程序可以接收输入,并以适当的格式输出。

要想经过控制台进行输入,首先须要构造一个 Scanner 对象,并与“ 标准输入流” System.in关联.

Scanner 类定义在java.util 包中。当使用的类不是定义在基本java.lang 包中时,必定要使用import 指示字将相应的包加载进来。

import java.util.*;  //必须导入该包

Scanner in = new Scanner(System.in);
String name = in.nextLine(); //输入一行,使用 nextLine方法是由于在输入行中有可能包含空格。
String firstName = in.next();//读取一个单词,碰见空白符中止
int i = in.nextInt();//读取一个整数
double d = in.nextDouble();//读取一个浮点数

Scanner API:
next():获取字符串,遇到空白字符中止
nextLine():获取一行字符
nextInt():获取int类型的整数
nextDouble():获取double类型的浮点数
hasNext():是否有下一个输入,若是有,返回true,不然返回false

输出

  • System.out.println(); //输出并换行
  • System.out.print(); // 输出不换行
  • System.out.printf(); //格式化输出

    %d 以十进制整数格式输出 %f 以十进制浮点数格式输出
    %c / %C 以字符符号输出 %s / %S 以字符串格式输出
    %o 以八进制整数格式输出 %x / %X 以十六进制整数格式输出

    以上为经常使用的一些格式化控制符,还有其余的,可自行查询。

总结

掌握 Java 基础语法部分后,你们必定要多加练习,程序员的路就是 多动手

相关代码记录于GitHub中,欢迎各位伙伴 Star

有任何疑问 微信搜一搜 [程序猿大博] 与我联系~

若是以为对您有所帮助,请 点赞收藏 ,若有不足,请评论或私信指正!谢谢~

相关文章
相关标签/搜索