01 - Java基础语法

一、环境搭建

之前发过一篇文章,有关Java环境搭建的,大家可以点点链接Java开发环境搭建

接下来,补充个语法点:

  • 注释

单行注释:// 注释

多行注释:/* 注释 */

文档注释:/** 注释 */

在这里插入图片描述

  • 语法规则

Java是一种纯面向对象的语言,任何代码语句必须包含在class中;
严格区分大小写;
是一种自由格式的语言;
代码分为结构定义语句和功能执行语句;
功能执行语句最后必须以分号结束;

二、基础语法

1、变量与基本数据类型

1.1 变量

变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。由于该存储单元中的数据可以发生改变,因此得名为"变量"。

变量分类

按所属的数据类型划分:

  • 基本数据类型变量
  • 引用数据类型变量 (比如字符串、数组、接口)

按被声明的位置划分:

  • 局部变量:方法或语句块内部定义的变量
  • 成员变量:方法外部、类的内部定义的变量

特别注意:类的外面不能有变量的声明

1.2 数据类型

由于变量记录的数据内容大小不同, 导致所需的存储单元大小不同,在 Java 语言中使用数据类型的概念加以描述 .
(C/C++、Java都属于强类型语言,声明变量时必须指定变量类型。相对应的,python属于弱类型语言)

字节是计算机信息技术用于计量存储容量的一种计量单位,作为一个单位来处理的一个二进制数字串,是构成信息的一个小单位。Java 中的字节是八位的字节(1 byte = 8 bit ),即它包含八位的二进制数
在这里插入图片描述
在这里插入图片描述

1.3 标识符

Java 对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。

规则如下:

  • 由字母、数字、下划线(_)、美元符号($)和人民币组成。(甚至可以使用中文作为部分变量,但不建议这样做)
  • 不能以数字开头。
  • 区分大小。
  • 长度无限制。
  • 不能是 Java 中的保留关键字。

标识符命名习惯:见名知意。
示例:

合法标识符:HelloWord、username2、user_name、_userName、$abc_123
非法标识符:2UserName、user#Name、Hello World、class

1.4 数据类型的转换

boolean 类型不能转换成任何其它数据类型。

自动类型转换:

  • 容量小的类型自动转换成容量大的数据类型 byte,short,int -> float ->long ->double
  • byte,short,int 不会互相转换,它们三者在计算时会转换成 int 类型

强制类型转换:

  • 容量大的类型转换成容量小的数据类型时,要加上强制转换符
  • long l = 100L;
  • int i = (int)l;
  • 有可能造成精度降低或数据溢出,使用时要小心

1.5 部分变量的使用

我们有时在申明变量给它选类型时,编译器总会提示错误,如下情况所述:

float num1 = 10.1;// 浮点数默认为double类型,由于左边float,右边double,所以提示需要强制类型转换。解决方法:在浮点数后加字符 f,即 float num1 = 10.1f

long num2 = 2200000000;// 整型默认为int,最大值为21亿多,long型变量虽然足够容纳,但由于左边为long,右边为int,所以还是会提示超出范围。解决方法:在整型后加字符l,即long num2 = 2200000000l

2、方法

2.1 概述

方法用于封装一段特定的逻辑功能。方法的主要要素有:权限修饰符方法名参数列表返回值

2.2 格式

其实,这个格式很灵活的,具体题目具体分析。
在这里插入图片描述

2.3 权限修饰符详解

在这里插入图片描述

2.4 返回值

方法调用结束后可以返回一个数据,称之为返回值。

方法在声明时必须指定返回值的类型。

通过 return 语句返回,return 语句的作用在于结束方法且将数据返回。

如果方法没有返回值(即方法不需要返回数据),需将返回值类型声明为 void。

2.5 参数列表详解

方法的参数列表:在调用时传递给方法,需要被方法处理的数据。

在方法定义时,需要声明该方法所需要的参数变量。

在方法调用时,会将实际参数值传递给方法的参数变量。

必须保证传递参数的类型和个数符合方法的声明。

2.6 方法实例

接下来我们用代码理解下上面的概念

a、调用无参的参数

	public static void main(String[] args) {
    
    
		say();
	}
	
	public static void say() {
    
    
		System.out.println("我");
		System.out.println("是");
		System.out.println("Victor");
	}

运行结果:
在这里插入图片描述
b、调用有参的参数

	public static void main(String[] args) {
    
    
		System.out.println(sum(20,20));
	}
	
	public static int sum(int x, int y) {
    
    
		return x + y;
	}

运行结果:
在这里插入图片描述

3,运算符

3.1 算术运算符

在这里插入图片描述
算术运算符基本跟我们之前小学学习的加减乘除都一样的,现在就只讲解下自增自减运算符:

++

如果是变量前缀(a++):先对此变量加 1,再执行其他的操作。

如果是变量后缀(++a):先执行当前语句的其他操作,再对此变量加 1。

- -

如果是变量前缀(a- -):先对此变量减 1,再执行其他的操作。

如果是变量后缀(- -a):先执行当前语句的其他操作,再对此变量减 1。

小结: 前自增或减 都是先操作再赋值; 后自增或减 都是先赋值再操作。

3.2 赋值运算符

赋值运算符作用是将一个值赋给一个变量,运算顺序从右到左;
在这里插入图片描述

3.3 关系运算符

关系运算符作用是比较两边的操作数,结果总是 boolean 型的。
在这里插入图片描述

3.4 逻辑运算符

逻辑运算符用于对 boolean 型结果的表达式进行运算,运算结果总是 boolean 型,后面结合条件结构讲解。
在这里插入图片描述
注意啦: 短路(&& ||)与 逻辑(& |) 的区别
反正不管是哪个,与:一假为假 ; 或:一真为真

  • &&(短路与):如果左边为false则右边不执行,整个表达式为false,否则左边true则要执行右边;
  • &(逻辑与):不管左边false还是true,都需要执行右边。
  • ||(短路或):如果左边为true则右边不执行,整个表达式为true,否则左边false则要执行右边;
  • |(逻辑或):不管左边false还是true,都需要执行右边。

3.5 字符串连接运算符

eg:String s=“He” + “llo”; 结果:“Hello”。

String s=“x” + 123; 结果:x123。

如上可以得出结论:"+"除了可用于字符串相连接,也能将字符串与其它的数据类型相连成一个新的字符串。
“+”两边任意一边为字符串,结果就为字符串

3.6 三目运算符

x? y : z

x 为 boolean 类型表达式,先计算 x 的值,若为 true,整个三目运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。

eg:int score = 75;
String type = score >=60 ? “及格” : “不及格”; 结果:及格

4、命名规范

  • 名规范:首字母大写,后面每个单词首字母大写(大驼峰式)。
  • 方法名规范: 首字母小写,后面每个单词首字母大写(小驼峰式)。
  • 变量名规范:全部小写。

5、转义字符

所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加""来表示常见的那些不能 显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII码字符意思了。
在这里插入图片描述

三、流程控制

有三种基本结构:顺序结构分支结构循环结构

1、接收用户输入

首先,创建Scanner工具类对应的实体对象input,用于操作输入,需要注意以下两点:

在这里插入图片描述
更具体的输入,需要使用上一步创建的实体input带有的函数,比如:

  • input.nextInt(); // 返回值为int
  • input.nextFloat(); // 返回值为float
  • input.nextByte(); // 返回值为byte

然而上述函数要求输入必须与预定类型一致。为了方便接受各种不同类型的输入,可以使用函数:

  • input.next(); // 返回值为String
  • input.nextLine(); // 返回值为String

注意:

next与nextLine尽量不要同时使用,why? <------点我点我

2、分支执行结构

2.1 if条件语句

if 条件结构是根据条件判断之后再做处理

if(条件语句){…}
if (条件语句){…}else{…}
if (条件语句){…}else if(条件语句){…}
if(条件语句){…}else if(条件语句){…}else{…}

例子:用户输入学生成绩,判断成绩是否及格,判断条件为 优良: > 90、良好:81-90、中:60-80、不及格:<60

import java.util.Scanner; 
public class Demo4{
    
     
	public static void main(String[] args){
    
     
		Scanner input = new Scanner(System.in); 
		System.out.println("请输入成绩:"); 
		int score = input.nextInt(); // 91 优 81-90 良 60-80 中 60 差 
		if(score >= 91){
    
     
			System.out.println("您的成绩是优秀!继续加油哦!"); 
		}else if(score >= 81 & score < 91){
    
     
			System.out.println("您的成绩是良好!还要努力哦!"); 
		}else if(score >= 60 & score <= 80){
    
     
			System.out.println("您的成绩是中等!还要加倍努力哦!"); 
		}else{
    
     
			System.out.println("您的成绩是差!准备补考费吧!"); 
		} 
	}
}

运行结果:
在这里插入图片描述

2.2 switch语句

switch(表达式){

case 取值 1: 语句块 1;break;

case 取值 n: 语句块 n;break;

default: 语句块 n+1;break;

}

switch 语句有关规则 :

  • 表达式的返回值必须是下述几种类型之一:int, byte, char, short,String;
  • case子句中的取值必须是常量,且所有 case 子句中的取值应是不同的;
  • default 子句是可选的;
  • break 语句用来在执行完一个case 分支后使程序跳出 switch 语句块;
  • 如果 case 后面没有写 break 则直接往下面执行!
  • case 后面的执行体可写{ }也可以不写{ }

例题:多分支月份输出天数(充分利用语句特性)

import java.util.Scanner; 
public class Demo6{
    
     
	public static void main(String[] args){
    
     
		Scanner input = new Scanner(System.in); 
		System.out.println("请输入月份:"); 
		int month = input.nextInt(); 
		switch(month){
    
     
			case 1: 
			case 3: 
			case 5: 
			case 7: 
			case 8: 
			case 10: 
			case 12: 
				System.out.println(month + "月共有 31 天"); 
				break; 
			case 4: 
			case 6: 
			case 9: 
			case 11: 
				System.out.println(month + "月共有 30 天"); 
				break; 
			case 2: 
				System.out.println(month + "月共有 28 天");  
				break; 
			default : 
				System.out.println("友情提示,您输入有误!"); 
				break; 
		} 
	} 
}

运行结果:
在这里插入图片描述

3、循环执行结构

循环语句功能

  • 在循环条件满足的情况下,反复执行特定代码

循环语句分类

  • for 循环
  • while 循环
  • do/while 循环

3.1 while循环

合条件,循环继续执行;否则,循环退出

特点:先判断,再执行

while(条件表达式){
    
     
    //语句块;
}

3.2 do-while 循环

先执行一遍循环操作,符合条件,循环继续执行;否则,循环退出 (保证函数体内的代码至少执行一次)

特点:先执行,再判断

do {
    
     
    循环操作 
}while ( 条件表达式 );

3.3 for循环

for(初始化参数;判断条件 ;更新循环变量){
    
     
    循环体; 
}

3.4 break、continue与多重循环的跳出

之前写过一篇关于如何退出多重循环,里边也写了break、continue的区别。

四、数组

1、基础内容

数组这一板块的基础内容都在不久前发过一篇数组的文章,里面主要讲了数组的概念、创建格式以及常见问题。

但需补充一点:数组是引用数据类型,系统会自动给它默认初始值。

数组的初始值:

  • byte、short、int、long:0;
  • float、double:0.0;
  • boolean:false;
  • char:一个空格;
  • String:null。

2、数组应用

2.1 寻找数组最值

创建变量,存储最值,遍历数组更新最值;

建议:将变量初始化为数组的第一个元素;

public static void main(String[] args) {
    
    
		int[] nums = {
    
    10,30,40,50,0,70,25};
		//1.创建一个变量,用于存储遍历数组时最大值。
		int n = nums[0];
		//2.循环取出数组中的每一个内容,从下标1开始
		for(int i = 1; i < nums.length; i ++) {
    
    
			//将数组中的每一个内容与n比较,如果比n大,则将n的值赋值给这个内容
			//方法一
			n = n > nums[i] ? n : nums[i];	
			//方法二
			/*if(n < nums[i]) {
				n = nums[i];
			}*/
		}
		System.out.println("最大值为:" + n);
	}

运行结果:
在这里插入图片描述

2.2 常用算法

2.2.1 冒泡排序

请点击这里查看冒泡排序的算法。

2.2.2 二分查找

请点击这里查看二分查找的算法。

猜你喜欢

转载自blog.csdn.net/weixin_46312449/article/details/112343540
今日推荐