Java语法【一】

一、Java数据类型-String

  String属于引用数据类型,是Java类库中提供的一个类,用类来当做字符串变量类型

声明方式,例:

String str="我是谁";

与基本类型的运算规则:任意八种基本类型的数据与String类型数据进行”+“运算时,结果仍为字符串,String不能转换为其他基本类型。

二、基本数据类型之间的转换

 8种基本数据类型除了布尔型以外,其他7种之间可以进行相互转换

默认转换

转换规则:将取值范围小的类型可以自动转换成取值范围大的类型

char	---》							
byte	---》	int 	---》	long	---》	float	---》	double
short	---》							

注:4字节的float类型表数范围大于8字节的long,浮点数在存储时结构与整数计算方式不同。

强制转换

    容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造 成精 度降低或溢出;使用时要格外注意,例:

int a = 258;

byte b = (byte)a;

此时b的值为2,原因:int占4个字节,00000000|00000000|00000001|00000010

                                     byte占1个字节,则前面三个字节数据溢出,只剩下了00000010

在多种数据进行混合运算时,会自动将所有数据转换为表数范围最大的类型再进行计算。

三、运算符

1.算数运算
运算符	            运算	                     案例	            结果
+	                正号	                      +3	              3
-	                负号	                  b=4;-b                 -4
+	                 加	                         5+5	             10
-	                 减	                      514-114	             400
*	                 乘	                         3*4	             12
/	                 除	                         5/3	              1
%	                取模	                     5%3	              2 
++	  自增:在前先运算后取值,在后先取值后运算	a=2;b=++a;c=a++;      a=3 b=3 c=2

--	  自减:在前先运算后取值,在后先取值后运算	a=2;b=--a;c=a--;      a=1 b=1 c=2

+	             字符串相加	                  "He"+"llo"	        "Hello"
2.比较运算符 
运算符	              运算	           案例	                  结果
==	                 相等于	          4==3	                 false
!=	                 不等于	          4!=3	                 true
<	                  小于	           4<3	                 false
>	                  大于	           4>3	                 true
<=	                不大于	          4<=3	                 false 
>=	                不小于	          4>=3	                 true
instanceof	检查是否是类的对象	"hello" instanceof String	 true

比较运算符的结果都为boolean型,也就是要么true,要么是false。 

3.逻辑运算符

&——逻辑与        |——逻辑或        !——逻辑非

&&——短路与     ||——短路或       ^——逻辑异或

a	      b	     a&b	 a|b	 !a	    a^b	    a&&b	a||b
true	true	true	true	false	false	true	true
true	false	false	true	false	true	false	true
false	true	false	true	true	true	false	true
false	false	false	false	true	false	false	false

”&“和”&&“的区别:

单个&时,左边无论真假,右边表达式都进行运算;

两个&时,若左边为真,右边参与运算;当左边为假,右边不参加运算;

”|“和”||“同理。

4.赋值运算符

符号:=

扩展赋值运算符:+=、-=、*=、/=、%=

例:s += 2——>s = s+2,其余同理

经典案例:

short a = 3;

a = a+2;//此行会报错

a +=2;

原因:2默认为int型,而扩展赋值运算符自带隐式转换。

5.条件运算符
语法:

(条件表达式)?表达式1:表达式2;

条件表达式为true,运算后的结果是表达式1;条件表达式为false时,运算后的结果是表达式2。

注:如果运算后的结果赋给新的变量,要求表达式1和表达式2为同种或兼容的类型。

6.位运算符


日常开发中位运算使用相对较少,但是巧妙的使用位运算可以大量减少运行开 销, 优化算法。

<<	空位补0,被移除的最高位丢弃,空缺位补0


>>	被移位的二进制最高位是0,右移后,空缺位补0; 最高位是1,空缺位补1


>>>	被移位二进制最高位无论是0或者是1,空缺位都用0补


&	二进制位进行&运算,只有1&1时结果是1,否则是0


|	二进制位进行 | 运算,只有0 | 0时结果是0,否则是1


^	相同二进制位进行 ^ 运算,结果是0,例:1^1=0 , 0^0=0

    不相同二进制位 ^ 运算,结果是1,例:1^0=1 


~	正数取反,各二进制码按补码各位取反

    负数取反,各二进制码按补码各位取反

三、控制台输入

Java提供Scanner类来实现从控制台向程序输入信息功能。

具体步骤:

创建Scanner类型对象,例:

Scanner sacnner=new Scanner(System.in);

此时编译软件会自动导入Scanner的包

import java.util.Scanner;

调用相关功能,来获取输入的信息


import java.util.Scanner;
public class scanf {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String ctrl = scanner.next();
        int str2 = scanner.nextInt();
        //此处省略其他
        System.out.println(ctrl);
        System.out.println(ctr2);
    }
}

四、控制语句

1.条件语句

1)if语法:

基本语法:

if(判断条件1){

    //条件成立时运行语句

}

else if(判断条件2){

    //条件成立时运行语句

}

else{

    //条件成立时运行语句

}

举例:

import java.util.Scanner;

public class pan_duan {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);

        System.out.println("请输入需要判断的月份");
        int month=scanner.nextInt();

        if(month==3||month==4||month==5)
            System.out.println(month+"是春季");

        else if(month==6||month==7||month==8)
            System.out.println(month+"是夏季");

        else if(month==9||month==10||month==11)
            System.out.println(month+"是秋季");

        else
            System.out.println(month+"是冬季");
    }
}

当if语句块只有一行语句时,可以省略{},就如本例,但不推荐这样使用

(2)switch语法

基本语法:

switch(判断表达式){

    case 值1:

        //条件成立时运行语句

    case 值2:

        //条件成立时运行语句

    ……

    case 值n:

        //条件成立时运行语句

    default:

        //条件都不成立时运行语句

}

例:

import java.util.Scanner;
 
public class biancheng5 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入年份:");
        int year = scan.nextInt();
        System.out.print("请输入月份:");
        int month = scan.nextInt();
        System.out.print("请输入日期:");
        int day = scan.nextInt();
        int days = 0;
        switch (month){
            case 12:days += 30;
            case 11:days += 31;
            case 10:days += 30;
            case 9:days += 31;
            case 8:days += 31;
            case 7:days += 30;
            case 6:days += 31;
            case 5:days += 30;
            case 4:days += 31;
            case 3:
                if((year%4==0&&year%100!=0)||year%400==0){
                    days += 29;
                }
                else{
                    days += 28;
                }
            case 2:days += 31;
            case 1:days += day;
        }
        System.out.println(year+"年"+month+"月"+day+"天是今年的第"+days+"天");
    }

case 值相当于if的判断条件中的”==“,需要注意的是,case语句并没有{},但case语句具有”穿透性“,在一般情况下,需要用break取消其穿透性。并且凡是switch可以实现的功能 if else都可以实现,反之则不一定。switch和if else都能实现的功能建议使用switch,效率更高

下面是用if{}else语句实现相同功能的代码

import java.util.Scanner;

/**
 * 编程一个程序,计算今天是今年的第几天.
 * 	  例如: 控制台分别输入年月日
 * 	  2023
 * 	  10
 * 	  30
 */
public class years_day {
    static Scanner scanner=new Scanner(System.in);
    public static void main(String[] args) {
        System.out.println("请输入年份");
        int year=scanner.nextInt();
        System.out.println("请输入月份");
        int month=scanner.nextInt();
        System.out.println("请输入日期");
        int days=scanner.nextInt();
        boolean flag=run_nian(year);
        int yearsDay=days(flag,month,days);
        System.out.println(year+"年"+month+"月"+days+"日"+"是"+year+"年的第"+yearsDay+"天");
    }
    public static boolean run_nian(int year){
        if(year%4==0&&year%100!=0||year%400==0)
        {
            return true;
        }
        else
            return false;
    }

    public static int days(boolean flag,int month,int days){
        int february;
        int day=0;
        if(flag){
            february=29;
        }
        else{
            february=28;
        }
        for(int i=1;i<month;i++){
            if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){
                day+=31;
            }
            else if (i==2){
                day+=february;
            }
            else{
                day+=30;
            }
        }
        day+=days;
        return day;
    }

}
2.循环语句

(1)while循环

基本语法:

while(条件表达式){

    //条件成立时运行语句

}

//继续执行后续代码

while循环在每次循环开始前,首先判断条件是否成立。如果计算结果为true,就把循环体内的语句执行一遍,如果计算结果为false,那就直接跳到while循环的末尾,继续往下执行。

(2)do-while循环
基本语法:

do{

    //条件成立时运行语句

}while(条件表达式);

//继续执行后续代码

(3)for循环

基本语法:

for(计数器初值;条件表达式;计算器操作){

     //条件成立时运行语句

}

//继续执行后续代码

for循环的功能非常强大,它使用计数器实现循环。for循环会先初始化计数器,然后,在每次循环前检测循环条件,在每次循环后更新计数器。

3.break和continue 

在循环过程中,可以使用break语句跳出当前循环。在Java中,可以通过标签跳出多层循环,例:

public class manyxh {
    public static void main(String[] args) {
        outloop:for (int i = 0;i < 5;i++){
            for (int j = 0;j <3;j++){
                System.out.println("@");
                if(i == 2){
                    break outloop;
                }
            }
            System.out.println("#");
        }
    }
}

break会跳出当前循环,也就是整个循环都不会执行了。而continue则是提前结束本次循环,直接继续执行下次循环。

  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北京最后的深情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值