Java基础语法

你之所以能优于别人,正是因为你坚持了别人所不能坚持的。

本文相关代码在我的Github,欢迎Star~

https://github.com/zhangzhibo1014/DaBoJava

前言

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

标识符

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

命名规则:

  • 数字字母下划线(_)美元符号($) 组成

  • 不能以数字开头

  • 不能为Java中的关键字

  • 严格区分大小写,不能包含空格

  • 可以为中文,但不推荐使用

PS

  • 起名字的目的是为了让人们记住,所以最好做到(见名知意)。

    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 
    
    abstractassertbooleanbreakbytecasecatch
    charclasscontinueconstdefaultdodouble
    elseextendsenumfinalfinallyfloatfor
    gotoifimplementsimportinstanceofintinterface
    longnativenewpackageprivateprotectedpublic
    returnshortstaticsynchronizedsuperstrictfpthis
    throwthrowstransienttryvoidvolatilewhile

注释

注释是用来对当前编写的代码进行解释,方便后续人员的维护。因此,我们在编写代码的时候一定要书写注释,养成良好的编程习惯

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

注意

  • 被注释的文字不会被编译

  • 多行注释和文档注释不能嵌套使用!

数据类型

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

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

    类型存储空间取值范围默认值
    byte1个字节-128 ~ 1270
    short2个字节-32768 ~ 327670
    int4个字节-2147483648 ~ 21474836470
    long8个字节-9223372036854775808 ~ 92233720368547758070

    注释

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

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

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

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

    注释

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

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

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

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

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

    在这里插入图片描述

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

注释

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

    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

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

如果觉得对您有所帮助,请 点赞收藏 ,如有不足,请评论或私信指正!谢谢~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值