Java基本语法

Java基本语法

标识符

1.java中标识符由26个英文字符大小写,数字0-9,符号_ $。注意:数字不能开头。
2.java中是严格区分大小写。
3.在实际写程序的过程中定义标识符遵守“见名之意”。

数据类型

Java语言提供了八种基本类型。其中,六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
byte、short、long、int、float、double、char、boolean。

整型

类型名字表现形式大小范围
字节byte1byte = 8bit[-128,127]
短整型short2byte = 16bit[-32768,32767]
整型int4byte = 32bit[-2147483648~2147483647]
长整型long8byte = 64bit[-9223372036854774808~9223372036854774807]

浮点型

类型名字表现形式大小范围
单精度float4byte = 32bit-2^128 ~ +2^128
双精度double8byte = 64bit-2^1024 ~ +2^1024

字符型

类型名字表现形式大小范围
字符型char2byte = 16bitUnicode 0 ~ Unicode 65535

布尔型

类型名字表现形式大小范围
布尔类型boolean1byte = 8bittrue 或 false

常量

在java程序执行过程中,其值不会发生改变的量就是常量。

自定义常量

被final修饰的变量为常量
注意: 符合标识符的命名规范,驼峰命名原则 常量全部大写,多个单词之间_连接。

变量

可变的量,在程序执行过程中,其值可以发生改变的量。
语法:
数据类型 变量名 = 变量值; --声明的同时赋值
数据类型 变量名; --先声明一个变量
变量名 = 赋值; --后赋值

变量的分类

1.局部变量 : 定义在{}中的变量,方法,语句块…
必须要先声明后赋值才能使用
2.成员变量 : 类中方法外
只声明不赋值存在默认值: 整数->0 小数 ->0.0 字符->’ ’ 布尔->false 字符串->null

Java中常用转义字符

\n换行
\r回车
\f换页
\b退格
\0空字符
\s字符串
\t制表符
\"双引号
\’单引号
\\反斜杠

自动类型转换

byte,short,char—> int —> long—> float —> double

在这里插入图片描述

自动类型转换规律

1、小的类型自动转化为大的类型
2、整数类型可以自动转化为浮点类型,可能会产生舍入误差
3、字符可以自动提升为整数
4、其中boolean类型不参与转换

		//整型转浮点
		 int i = 360;
		 double b = i;//360.0

强制类型转换

小范围类型变量 变量名 = (小范围类型变量)大范围类型的数据;
1、先把数据强转为对应类型
2、对应类型的数据赋值给对应类型的变量

		//强转(大转小)
		int i = 3;
		short s = (short)i;
		System.out.println(s);
		//取整
        double d=4.9;
        int i = (int)d;
        System.out.println(i);//i = 4

Java中的六种运算符

算术运算符
赋值运算符
关系运算符
逻辑运算符
位运算符
三元运算符

算数运算符

一元|单目运算符 : 操作数只有一个运算符 +(加) 、-(减) 、++(自增)、- -(自减)
二元|双目运算符 : 操作数有两个 +(加)、-(减)、*(乘)、/(除)、%(取余)
三元|三目运算符 : 条件运算符
单目运算符中, “+”运算符不但用于计算两个数值型数据的和,还可用于字符串对象的连接。当+运算符的两个操作数一个是字符串而另一个是其他数据类型,系统会自动将另一个操作数转换成字符串,然后再进行连接,列如,System.out.println("a + b = " + (a + b) );
++或- -:自加(减)运算符
运算符既可以放入操作数的左边,也可以放入操作数的右边,但是表达的效果完全不一样。如:i++或++i;i- -或- -i。
如果把++(- -)放到左边,表示先把操作数加一(减一),然后才把操作数放入表达式中运算。如果把++(- -)放到右边,表示先把操作数操作数放入表达式中运算,然后才把操作数加(减)一。

赋值运算符

=:将右边的值赋给左边,例:int a = 1;

+=:左右两边的和相加赋给左边,例:int a = 1; a+=2;结果a的值为3

-=:左边减去右边的差赋给左边,例:int a =5;a-=2;结果a的值为3

=:两边数值相乘的值赋给左边,例:int a = 2;a=2;结果a的值为4

/=:左边除以右边的值赋给左边,例:int a = 6;a/=2;结果a的值为3

%=:左边除以右边的余数赋给左边,例:int a =7;a%=2;结果a的值为1

关系运算符

1、>:大于

		int a = 1;
		int b =2;
		System.out.print(a > b);//其结果为false

2、<:小于

		int a = 1;
		int b =2;
		System.out.print(a < b);//其结果为true

3、>=:大于等于

		int a = 1;
		int b =2;
		System.out.print(a >= b);//其结果为false

4、<=:小于等于

		int a = 1;
		int b =2;
		System.out.print(a <= b);//其结果为true

5、==:等于

		int a = 1;
		int b =2;
		System.out.print(a == b);//其结果为false

6、!=:不等于

		int a = 1;
		int b =2;
		System.out.print(a != b);//其结果为true

其结果都是boolean类型,即要么是true要么是false

逻辑运算符

&&:与、并且(短路), 两个条件同时为真时,结果为真
||:或、或者(短路), 两个条件有一个为真时,结果即为真
!:非,(!+条件) 条件为真时,结果为假

流程控制语句

if语句

如果条件判断的表达式返回值是true则可以执行if内部的语句,否则如果是false就不可以执行。

语法:if(条件判断表达式){
执行语句
}

范例:如果java考试成绩大于等于60及格

class Demo1{
	public static void main(String[] args){
		int score = 70;
		if(score >= 60){
		System.out.println(“及格”);
		}
		System.out.println(“程序结束”);
	}
}

if…else

语法:if(条件判断表达式){
执行语句
}else{
执行语句
}

范例:如果java考试成绩大于60及格,否则是不及格

class Demo1{
	public static void main(String[] args){
		int score = 10;
		if(score >= 60){
		System.out.println(“及格”);
		}else{
		System.out.println(“不及格”);
		}
		System.out.println(“程序结束”);
	}
}

if…else if…else

语法:if(条件判断表达式){
执行语句
}else if(条件表达式1){
执行语句
}else if(条件表达式2){
……
}else{
}

范例:如果大于等于60小于等于85及格,大于等于85小于100优秀,如果等于100完美,其余的不及格。

class Demo1{
	public static void main(String[] args){
		int score = 100;
		if(score >= 60 && score < 85){
		System.out.println(“及格了”);
		}else if(score >= 85 && score < 100){
		System.out.println(“优秀”);
		}else if(score == 100){
		System.out.println(“完美”);
		}else{
		System.out.println(“不及格”);
		}
		System.out.println(“程序结束”);
	}
}

范例: 如果工资大于3000为D级,大于5000为C级,大于7000为B级,大于10000为A级

//通过简单if组合的形式
class Demo2{
	public static void main(String[] args){
		int salary = 7000;
		if(salary >= 3000 && salary < 5000){
		System.out.println(“D级”);
		}
		if(salary >= 5000 && salary < 7000){
		System.out.println(“C级”);
		}
		if(salary >= 7000 && salary < 10000){
		System.out.println(“B级”);
		}
		if(salary >= 10000){
		System.out.println(“A级”);
		}
	}
}

//通过多重if实现
class Demo3{
	public static void main(String[] args){
		int salary = 3000;
		//多重if当遇到第一个满足的表达式条件时执行当前的if语句,就不会再向下去执行
		if(salary >= 10000){
		System.out.println(“A级”);
		}else if(salary >= 7000){
		System.out.println(“B级”);
		}else if(salary >= 5000){
		System.out.println(“C级”);
		}else if(salary >= 3000){
		System.out.println(“D级”);
		}
	}
}

swtich语句

Switch:由上到下用switch中的表达式和值进行比较,如果匹配成功就执行case后的语句,在执行break的时跳出switch,如果一个也没有匹配上就执行default默认情况。

Switch(表达式){
case 常量1:
执行语句1;
break;
case 常量2:
执行语句2;
break;
……
default:
执行语句 ;
break;
}

范例:打印星期几

class Demo4{
	public static void main(String[] args){

		int week = 0;

		switch(week){
			case 1:
				System.out.println("星期一");
				break;
			case 2:
				System.out.println("星期二");
				break;
			case 3:
				System.out.println("星期三");
				break;
			case 4:
				System.out.println("星期四");
				break;
			case 5:
				System.out.println("星期五");
				break;
			case 6:
				System.out.println("星期六");
				break;
			case 7:
				System.out.println("星期日");
				break;
			default:
				System.out.println("输入错误");
				break;
		}
	}
}

Break可以省略不会报错,如果省略就会穿透执行语句(不管是否能匹配上),知道遇到一个break才会跳出,所以我们不建议省略break。

范例:计算指定年的月中有多少天

class Demo5{
	public static void main(String[] args){
		//计算每一年的每一月有几天
		        int year = 2000;
        int month = 2;
        int day = 0;
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                day = 31;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                day = 30;
                break;
            case 2:
                if ((year % 400) == 0 || (year % 4 == 0 && year % 100 != 0)) {
                    day = 29;
                } else {
                    day = 28;
                }
                break;
            default:
                break;
        }
        System.out.println(year + "年" + month + "月有" + day + "天");
	}
}

注意:
Switch和多重if的区别:
If可以做等值判断也可以做区间判断。
Switch只能做等值判断,不能做区间判断

循环结构

while

循环:就是重复发生的过程(循环一般有重复的前提条件)。

语法:while(表达式){
循环体
}
表达式结果如果是true那么就执行循环体,如果是false就结束循环

范例:打印1到100之间的数字

class Demo7{
	public static void main(String[] args){
		//循环变量,计数器
		int i = 1;
		while(i <= 100){
			System.out.println(i);
				//更改循环条件
				i++;
		}	
	}
}

范例:打印1到100之间的所有的偶数和

class Demo8{
	public static void main(String[] args){
		//定义计数器
		int i = 0;
		//定义偶数和的结果变量
		int sum = 0;
		while(i <= 100){
		//判断i是否是偶数
		if(i%2 == 0){
		//累加偶数
		sum += i;
		}
		//更新计数器
		i++;
		}
		System.out.println(sum);
	}
}

do…while

语法:do{
	循环体
	}while(表达式)

注意:do…while和while,前者是先执行循环体,后者是先判断在执行循环体。

for

语法:for(表达式1; 表达式2; 表达式3){
循环体
}
表达式形式功能举例
表达式1赋值语句循环结构的初始化功能,为循环变量赋初值int i = 1
表达式2条件语句循环结构的循环条件i < 10
表达式3迭代语句,通常使用++或–运算符循环结构的迭代部分,通常用来修改循环变量的值i++

范例:打印1到100之间的所有的偶数和

class Demo11{
	public static void main(String[] args){
	/*
	需求:打印1到100之间的所有的偶数和
	分析:
	循环条件:判断计数器是否小于等于100
	循环操作:累加偶数和,更新计数器
	*/
	//定义偶数和的结果变量
		int sum = 0;
		for(int i = 0; i <= 100; i++){
		if(i%2 == 0){
		sum += i;
		}
		}
		System.out.println(sum);
	}
}

范例:打印乘法口诀
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
……

class Demo13{
	public static void main(String[] args){
		/*
		范例2:打印乘法口诀
		11=1
		12=2 22=4
		13=3 23=6 33=9
		……
		*/
		for(int i = 1; i <=9; i++){
			for(int j = 1; j <= i; j++){
				System.out.print(j+"x"+i+"="+j*i+"\t");					
			}
			System.out.println();
		}	
	}
}

总结:
1、最重要的循环是while和for
2、 如果循环开始之前就能确定循环次数我们建议使用for
3、 如果循环次数不定建议使用while

break

break用来跳出循环和switch,出现在循环语句中,作用是跳出循环语句,执行后面的代码;若出现在嵌套循环中的内层循环时,只能跳出内层循环,如果想跳出外层循环需要对外层循环添加标记。

范例:运动会上跑5000米,跑到第三圈时,抽筋了退赛

class Demo14{
	public static void main(String[] args){
		//需求:运动会上跑5000米,跑到第三圈时,抽筋了退赛
		for(int i = 1; i <= 10; i++){
		if(i == 3){
		System.out.println(“抽筋了退出”);
		//跳出循环
		break;
		}
		System.out.println(“我跑到第”+i+“圈”);
		}
	}
}

跳出外层循环,需对外层循环添加标记,aaa:

public class Demo14 {
    public static void main(String[] args) {
        int i, j; // 定义两个循环变量
        aaa: for (i = 1; i <= 9; i++) { // 外层循环 标记aaa
            for (j = 1; j <= i; j++) { // 内层循环
                if (i > 4) { // 判断i的值是否大于4
                    break aaa; // 跳出外层循环
                }
                System.out.print("*"); // 打印*
            }
            System.out.print("\n"); // 换行
        }
    }
}

continue

也是来控制循环,作用是终止本次循环,执行下次循环。

范例:一周上五天班,然后我周三请假一天

class Demo15{
	public static void main(String[] args){

		//需求:一周上五天班,然后我周三请假一天
		for(int i = 1; i <= 5; i++){
			if(i == 3){
				System.out.println("周三肚子疼请假");
				//跳出本次循环,接着下一次循环
				continue;
			}
			System.out.println("今天星期"+i+"上班");
		}	
	}	
}

函数(方法)

方法是一段能完成独立功能的代码块。我们只需要写一次方法,可以被多次调用,提高了代码的复用性。

有返回值的方法

	语法:
	修饰符   返回值类型  方法名称(参数类型   参数名称){
		方法体
		return    返回值;
}

对于定义格式的解释:

修饰符:现阶段固定为public static两个关键字。

返回值类型:方法最终产生的结果数据是什么类型。

方法名称:自定义的名称,命名规则和变量一样。

参数类型:进入方法的数据是什么类型。

参数名称:进入方法的数据对应的变量名称。

方法体:方法内部执行的若干行代码。

return:结束方法的执行,并且将返回值返还给调用处。

返回值:方法最终产生的结果数据。

注意:

返回值必须和返回值类型对应。

参数如果有多个,需要使用逗号分隔。

参数如果没有,小括号则可以留空。

多个方法的定义先后顺序无所谓。

不能在一个方法内部定义方法。

方法定义之后,没有调用就不会执行;要想执行,一定要调用它。

常见的有三种:

单独调用。这种方式无法使用方法的返回值。格式:方法名称(参数值);

打印调用。这种方式可以将方法的返回值直接打印。格式:System.out.println(方法名称(参数值));

赋值调用。这种方式可以将方法的返回值赋值给一个变量,注意变量的数据类型必须和方法的返回值类型对应。格式:数据类型变量名称= 方法名称(参数值)

无返回值的方法

语法:
		修饰符 void 方法名称(参数类型参数名称){
		方法体
		return;
		}

修饰符:与普通方法一样

返回值类型:固定为void

方法名称:与普通方法一样

参数类型:与普通方法一样

参数名称:与普通方法一样

方法体:与普通方法一样

return:后面不能写返回值,直接分号结束。而且最后一行return通常情况下会省略不写。
范例:输入年份,判断是平年还是闰年(定义一个判断平年,闰年的方法)

public class demo02 {
    public static void main(String[] args) {
		//调用方法,对2020年进行判断
        System.out.println(yea(2020));
    }
	//定义方法,判断平年,闰年
    public static String yea(double a) {
        if ((a % 400 == 0) || (a % 4 == 0) && (a % 100 != 0)) {
            return "是闰年";
        } else {
            return "是平年";
        }
    }
}

方法重载

对于参数列表不一样的多个方法,如果设置不一样的方法名称会很麻烦,所以引入了方法重载(Overload)的技术。

方法重载:方法名称相同,但是参数列表不同,参数列表的不同包括:

1.参数的个数不同;

2.参数的类型不同;

3.参数的多类型顺序不同。

重载与下列因素无关:

1.方法的返回值;

2.参数的名称–如果新建的方法传入的参数以及顺序与已有的一样。
范例:计算不同图形的面积 长方形 正方形 圆形 梯形

public class demo02 {
    public static void main(String[] args) {
		//根据输入的类型,个数自动判断,梯形
        System.out.println(num(3,4,5));
    }
	public static int num(int a, int b) {
        return a * b; //长方形
    }

    public static int num(int a) {
        return a * a; //正方形
    }

    public static double num(double a) {
        return 3.14 * a * a;//圆形
    }

    public static int num(int a, int b, int c) {
        return (a + b) * c / 2;//梯形
    }
}

数组

内存中保存数据的集合。
数组的定义

语法:
定义1:
数据类型[] 数组名 = new 数据类型[整数];
整数:是数组的长度。
int[] arr = new int[5];
定义2:
语法:数据类型[] 数组变量名 = {值1, 值2,……}
Int [] array = {12, 34, 56,……};
定义3:
语法:数据类型[] 数组变量名 = new 数据类型[]{值1,值2,值3,……}
int[] arr = new int[]{3,5,1,7};
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值