java基础语法(精简版)

2023-10-27


一、运算符

1、算数运算符

        首先知道运算符和表达式:

                ·运算符:对常量或者进行操作的符号。

                ·表达式:用运算符把常量或者变量连接起来符合java语法的式子。

例如:

int a = 10;
int b = 20;
int c = a + b;

这里,“ + ”号是运算符,a + b 是表达式。由于“ + ”是算术运算符,所以表达式是算数表达式。

这样的算术运算符总共包括: +,-,*,/,%(取余)

下面举几个例子:

1.整数相除

System.out.println(10/2);//结果是5
System.out.println(10/3);
System.out.println(10/3.0);//结果是3.3333333335
System.out.println(10.0/3);//结果是3.3333333335

 第1、3、4调代码的结果没有问题,但是第2条代码的结果为什么不是小数呢?

因为两个整数相除,得到的结果也是整数类型。

总结: 整数相除,结果只能得到整数,如果想要得到带有小数的结果,必须加入小数(浮点类型)的运算。

2.取模运算符(取余运算)

System.out.println(5%2);

 结果为1。

注意一点:“/”运算取结果的商,而“%”运算取结果的余数。整数操作只能得到整数,要想得到整数,必须有浮点数参与运算。

2、赋值运算符

赋值运算符包括两种:

一种是基本赋值运算符:=(也就是等号)

例如:int a = 10;        将10赋值给变量a。

其余几种是扩展运算符,就是以下几种:
+=:加后赋值,a += b,将a + b的值赋给a

-=:减后赋值,a -= b,将a - b的值赋给a

*=:乘后赋值,a *= b,将a * b的值赋给a

/=:   除后赋值,a /= b,将a 除以b的商赋给a

%=:取余后赋值,a %= b,将a 除以 b的余数赋给a

注意:扩展的赋值运算符隐含了强转类型转换。

3、关系运算符(比较运算符)

关系运算符包含一下几个:
1.“==”:  例:a == b,判断a和b的值是否相等,成立为true,反之为false

2.“!=”:   例:a != b,判断a和b的值是否不相等,成立为true,反之为false

3.“>”:    例:a > b,判断a是否大于b,成立为true,反之为false

4.“>=”:  例:a >= b,判断a是否大于等于b,成立为true,反之为false

5.“<”:    例:a < b,判断a是否小于b,成立为true,反之为false

6.“<=”:  例:a <= b,判断a是否小于等于b,成立为true,反之为false

注意:关系运算符的结果是boolean类型的,要么是true,要么是false。不要把“==”和“=”混淆。

4、逻辑运算符

首先,我们要知道逻辑运算符的作用:用于整合多个比较表达式的条件。

我们可以用数学中的例子来理解:在数学中,可以写成 1<x<10,但在java中需要把这个式子先分解,在合并表达。

        ·分解:x>1和x<10

        ·合并:x>1 & x<10

在代码中实现:

public calss Test{
    public static void main(String[] args){
        int a = 5;
        System.out.println(x>1 & x<10);
    }
}

可以理解为两个表达式最终的结果,x>1为true,x<10为true,结果为true。

总结以下:
1.    &(与):遇发false则false,只有两边都为true时才为true。

2.    |(或):遇发true则true,只有两边都为false时才为false。

3.    !(非):     取反

4.    ^(异或):相同为false,不同为true。

5、三元运算符

三元运算符的格式为: 关系表达式 ?表达式1:表达式2;

如何执行的:首先计算关系表达式的值,

                      如果为true,结果为表达式1的值,

                      反之,如果为false,结果为表达式2的值。

再看一段代码:

public class Text{
    public static void main(String[] args){
        int a = 10;
        int b = 20;
        int max = a > b ? a : b;
        System.out.println(max);
    }
}

 可以看到,a是不大于b的,所以表达式的值为false,结果为b的值,再将b的值赋值给max,最后打印max的值为20.

也可以看作是求两个数的最大值或者最小值。

6、字符的“+”操作

        先看一段代码:

public calss Test{
    public static void main(String[] args){
        int a = 1;
        char b = 'a';
        System.out.println(a + b);
    }
}

那么int类型的a和字符类型的‘a’是如何相加的呢?

我们前面说到,当(byte,char,int)在一起运算时,都会提升为int之后,再进行运算。

但是,char类型如何提升为int数值的呢?

这里就要用到一套计算机中字节到字节的一套对应关系,名为ASCII表。如图:

 经过查表可知,字符‘a’真正存储的字节表示是数值97,经过+1得到结果就是98。

7、字符串的+操作

先看一段代码,

System.out.println("apple" + 678);
System.out.println("apple" + true);

 结果为:apple678和appletrue。因为这个 + 是【字符串连接符】,而不是算数运算。

可以理解为无论字符串后跟什么,直接粘后面。

但是再看一段代码:

System.out.println(4 + 5 + "apple" + 1);

 这段代码的结果是不是“45apple1”呢?答案不是的。

这是因为运算过程是从左往右进行运算,先是4 + 5之后,遇到了字符串,所以结果为“9apple1”

二、流程控制语句

1、顺序结构

顺序结构语句是java程序,默认的执行流程,按照代码的先后顺序依次执行。        

2、分支结构

1.if语句

if语句分为三种格式:

        1.第一种格式:

if(关系表达式){

        语句体;

}

执行流程:
首先计算关系表达式的值

如果为true,就执行语句体

如果为false,就不执行语句体

继续执行后面的内容

        2.第二种格式:

if(关系表达式){

        语句体1;

}else{

        语句体2;

}

执行流程:
首先计算关系表达式的值

如果为true,就执行语句体1

如果为false,就执行语句体2

最后再继续执行后面的语句内容

*可以理解为,如果...,否则...

        3.第三种格式:
if(判断条件1){

        语句体1;

}else if(判断条件2){

        语句体2;

}

...

else{

        语句体n+1;

}

*可以理解为,如果...,再如果...,再再如果...,最后...

执行流程:
首先计算判断条件1的值

如果为true,就执行语句体1,如果为false,就计算判断条件2的值

如果判断条件2的值为true,就执行语句体2,反之,就再判断条件3

...

如果判断条件中没有为true的,就执行语句体n+1,也就是else里的代码。

例如:

public class Text{
    public static void main(String[] args){
        int a = -1;
        if(a >= 90 && a <= 100){
            System.out.println("优秀")
        }else if(a >= 80 && a <= 89){
            System.out.println("良好")
        }else if(a >= 70 && a <= 79){
            System.out.println("中等")
        }else if(a >= 60 && a <= 69){
            System.out.println("及格")
        }else if(a >= 0 && a <= 59){
            System.out.println("继续加油!")
        }else{
            System.out.println("请输入有效成绩!")
        }
    }
}

2.switch语句

switch语句的格式和说明:

格式:
switch(表达式){

        case 值1 :

                语句体1;

                break;

        case 值2 :

                语句体2;

                break;

        ...

        default :

                语句体n + 1;

                break;

}

代码说明:

表达式:将要被匹配的值,取值为byte,char,short,int,JDK5以后可以是枚举,JDK7以后可以是String。

case:被匹配的值,和表达式比较的值。

break:表示中断、结束的意思,用来结束switch语句。

default:表示所有情况都不匹配时,执行这里的内容。

执行流程:

  1. 首先计算表达式的值
  2. 依次和case后面的值进行比较,如果有相对应的值,就会执行相应的语句体,执行过程中,遇到break就会结束,终止switch
  3. 如果所有的case对应的值与表达式的值都不匹配,就会执行default里面的语句体,然后程序结束掉。

这里举一个例子:
 

public class Test{
    public static void main(String[] args){
        int week = 2;
        
        switch(){
            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("请输入正确的日期!");
        }
    }
}

通过修改week的值,可以打印不同的星期。

但是当case中缺少break的时候,后续的case就不会有匹配效果,内部代码都会执行,直到遇到break,或者将整体的switch语句执行完毕,才会结束。即case的穿透现象:

例如:

public class Test{
    public static void main(String[] args){
        int week = 1;
        
        switch(){
            case 1 :
                System.out.println("星期一");
                
            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("请输入正确的日期!");
        }
    }
}

运行的结果为:
星期一

星期二

还可以用case穿透来举另一个例子:

例如:

public class Test{
    public static void main(String[] args){
        int week = 2;
        
        switch(){
            case 1 :
            case 2 :    
            case 3 :    
            case 4 :    
            case 5 :
                System.out.println("工作日");
                break;
            case 6 :
            case 7 :
                System.out.println("休息");
                break;
            default:
                System.out.println("请输入正确的日期!");
        }
    }
}

这里week为1,2,3,4,5的时候打印的是工作日,当为6,7的时候打印的是休息。

还要注意一点,case的对应值只能是常量,不能是变量。

三、循环

循环分为三种:

1、for循环

格式:
for(初始化语句;条件判断语句;条件控制语句){

        循环体语句;

}

执行流程:

  1. 执行初始化语句
  2. 执行条件判断语句,看执行的结果是true还是false。如果是true,继续执行;如果是false,就循环结束。
  3. 执行循环体语句
  4. 执行条件控制语句
  5. 回到2继续判断

2、while循环

格式:
初始化语句;

while(条件判断语句){

        循环体语句;

        条件控制语句;

}

执行流程:

  1. 执行初始化语句;
  2. 执行条件判断语句,看结果是否为true还是false。如果为true,继续执行;如果为false,循环结束。
  3. 执行循环体语句
  4. 执行条件控制语句
  5. 回到第2步继续

例子:
 

public class Test{
    public static void main(String[] args){
        int i = 1;
        while(i <= 50){
        System.out.println("好好学习!");
        i++;
        }
    }
}

这里循环执行了50次。

3、do while循环

格式:

初始化语句;

do{

        循环体语句;

        条件控制语句;

}while(条件判断语句);

执行流程:

  1. 执行初始化语句
  2. 执行循环体语句
  3. 执行条件控制语句
  4. 执行条件判断语句,看结果是true还是false。如果是true,继续执行;如果是false,循环结束。
  5. 回到第2步继续

注意的是:do...while循环不同于while循环,do...while循环是先执行循环体,后进行条件控制语句,最后执行条件判断语句。

例子:

public class Test{
    public static void main(String[] args){
        int i = 1;
        do{
            System.out.println("好好学习!");
            i++;
        }while(i <= 10);
    }
}

结果会打印10次”好好学习“。

但是下面一段代码会打印几次呢?还是不打印呢?

public class Test{
    public static void main(String[] args){
        int i = 11;
        do{
            System.out.println("好好学习!");
            i++;
        }while(i <= 10);
    }
}

答案是只会打印一次”好好学习“,原因如下:

无论判断条件是否满足,都会至少执行一次循环体。因为在执行循环体的时候,还没有执行到判断条件。

do...while一般用的比较少,但是要知道。

4、死循环

死循环就是无线循环。

下面直接看代码

1、for死循环:

public class Test{
    public static void main(String[] args){
        for(;;){
            System.out.println("好好学习");
        }
    }
}

2、while死循环:

public class Test{
    public static void main(String[] args){
        while(true){
           System.out.println(好好学习);
        }
    }
}

3、do...while死循环:

public class Test{
    public static void main(String[] args){
        do{
            System.out.println("好好学习!");
        }while(true);
    }
}

注意:在死循环之后的语句是无法执行的。

四、Random随机数

作用:用于产生一个随机数。

如何使用:

1、导包

导入 import java.util.Random包

2.创建对象

Random r = new Random();其中r是变量名,可以改变,其他的不能变。

3.获取随机数

int number = r.nextInt(10);获取【0,10)之间随机数。

例子:

import java.util.Random;

public class Test{
    public static void main(String[] args){
        Random r = new Random();
        int number = r.nextInt(10);
        System.out.println(number);
}

结果会产生一个从【0,10)之间随机数。包括0,但不包括10。


总结

以上就是比较基本的java语法,希望大家喜欢。下一章为java中基础语法的数组介绍。

大家喜欢的话给我一个免费的关注吧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java基础语法(精简版) 的相关文章

  • 如何让 BlazeDS 忽略属性?

    我有一个 java 类 它有一个带有 getter 和 setter 的字段 以及第二对 getter 和 setter 它们以另一种方式访问 该字段 public class NullAbleId private static final
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • 如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • org.apache.hadoop.security.AccessControlException:客户端无法通过以下方式进行身份验证:[TOKEN,KERBEROS] 问题

    我正在使用 java 客户端通过 Kerberos 身份验证安全访问 HDFS 我尝试打字klist在服务器上 它显示已经存在的有效票证 我收到的异常是客户端无法通过以下方式进行身份验证 TOKEN KERBEROS 帮助将不胜感激 这是一
  • 如何在java中将一个数组列表替换为另一个不同大小的数组列表

    我有两个大小不同的数组列表 如何从此替换 ArrayList
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • volatile、final 和synchronized 安全发布的区别

    给定一个带有变量 x 的 A 类 变量 x 在类构造函数中设置 A x 77 我们想将 x 发布到其他线程 考虑以下 3 种变量 x 线程安全 发布的情况 1 x is final 2 x is volatile 3 x 设定为同步块 sy
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • Eclipse 启动时崩溃;退出代码=13

    I am trying to work with Eclipse Helios on my x64 machine Im pretty sure now that this problem could occur with any ecli
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db
  • Java中super关键字的范围和使用

    为什么无法使用 super 关键字访问父类变量 使用以下代码 输出为 feline cougar c c class Feline public String type f public Feline System out print fe

随机推荐

  • 用户注意到用户计算机中千兆位网卡,网络设备互联考试习题

    1 下面那种网络互连设备和网络层关系最密切 C A 中继器 B 交换机 C 路由器 D 网关 2 下面那种说法是错误的 B A 中继器可以连接一个以太网UTP 线缆上的设备和一个在以太网同轴电缆上的设备 B 中继器可以增加网络的带宽 C 中
  • Node.js笔记:SerialPort(串口)模块使用(基于9.x.x)

    文章目录 目的 模块安装 基础使用 扫描端口 打开端口 发送数据 接收数据 错误处理 数据解析器 SerialPort类 构造方法 属性 事件 方法 命令行工具 总结 目的 上位机与各种电路模块间常常采用串口进行通讯 Node js中可以使
  • VSCode查找和替换正则表达式转义字符整理

    你也可以通过我的独立博客 www huliujia com 获取本篇文章 使用VSCode进行查找 替换时 经常需要用到正则表达式 一段时间不用就忘了 每次要用的时候都要耽误很多时间去查找 所以整理了一份很全的放在这里 这个其实是 NET使
  • Telnet找不到时的安装(启动)教程 (Windows)

    目录 前言 启动Windows功能 Step1 打开控制面板 Step2 点击程序 注意 不是卸载程序 Step3 点击 启动或关闭Windows功能 Step4 勾选 Telnet客户端 Step5 点击确认 等待启动 Step6 启动完
  • java: 非法字符: ‘\ufeff’

    导入项目运行后会发现如下错误 java 非法字符 ufeff java 需要class interface或enum 原因 编码问题 将UTF 8换成GBK 然后再将GBK转换为UTF 8即可
  • 2.4 等比数列

    学习步骤 如果我要学习等比数列 我会按照以下步骤进行学习 定义和性质 首先了解等比数列的定义和性质 包括公比 首项 通项公式 求和公式等 例题练习 通过练习一些简单的例题来理解等比数列的概念和性质 并能够灵活应用公式解决问题 深入理解 通过
  • Python 基础合集7:类和实例

    一 前言 本小节主要梳理类和实例的基本知识 包含类及其属性 方法的定义和调用 类的实例及其属性 方法的定义和调用 还介绍了3个魔法函数 init str repr 和私有化变量的使用 环境说明 Python 3 6 windows11 64
  • 关于kali安装nessus打不开网页?

    大家好 我想请教大家一个问题 我在kali上面安装的是10 4版本的nessus 后来压缩到tmp之后 我复制到etc里 我开启了这个nessus服务 但是显示这个 我擦 不知道怎么回事 换了一个8版本的也不行 然后最终的问题就是浏览器打不
  • 数据类型和取值以及运算符

    数据类型分为基本数据类型和引用数据类型 一 基本数据类型又分为 1 数值型 byte short int long float double 2 布尔型 booleanl 3 字符型 char 二 引用数据类型 类 接口 抽象类 数组 常用
  • 大一统,windows下安装linux的最新方式

    抛弃虚拟机和双系统 在windows下使用linux 为啥要执着于linux 入坑指南 安装windows terminal 开启子系统功能 下载Ubuntu系统 更改命令主题 把oh my zsh 项目 Clone 下来 复制 zshrc
  • RFC2367 PF_KEY键管理API

    组织 中国互动出版网 http www china pub com RFC文档中文翻译计划 http www china pub com compters emook aboutemook htm E mail ouyang china p
  • 基于C++的非线性方程的解法研究及实现

    基于C 的非线性方程的解法研究及实现 前言 关于非线性方程f x 0的根的解法目前分为三类 二分法 试值法和不动点迭代法 本文实例为寻找f x x2 2x在区间 1 3 内精度在0 05以内的实根 代码中的set用于保存答案 1 二分法 二
  • 华为云服务器最新信息,云服务器拉新

    云服务器拉新 内容精选 换一换 当云服务器密码即将过期 密码泄露或首次登录时 首次登录云服务器建议您修改初始密码 您可以参考本节操作在操作系统内部修改云服务器密码 优先推荐您参考在控制台重置云服务器密码 在控制台重置实例的登录密码 可以登录
  • 手把手教你如何自己设计实现一个深度学习框架(附代码实现)

    本文首先从深度学习的流程开始分析 对神经网络中的关键组件抽象 确定基本框架 然后再对框架里各个组件进行代码实现 最后基于这个框架实现了一个 MNIST 分类的示例 并与 Tensorflow 做了简单的对比验证 喜欢本文 就请点赞 收藏 关
  • HBase写吞吐场景资源消耗量化分析及优化

    一 概述 HBase 是一个基于 Google BigTable 论文设计的高可靠性 高性能 可伸缩的分布式存储系统 网上关于 HBase 的文章很多 官方文档介绍的也比较详细 本篇文章不介绍HBase基本的细节 本文从 HBase 写链路
  • Jupyter 如何使用 args = parser.parse_args()

    最近在女朋友的催促下 啃代码啃得脑壳疼 遇到了一个问题 python文件里面的参数不能直接在jupyter中使用 放在jupyter中的时候就会报错 如下所示 parser argparse ArgumentParser parser ad
  • Vscode配置C/C++环境出现报错,导致不能运行代码,报错如下:

    Vscode配置C C 环境出现报错 导致不能运行代码 报错如下 问题描述 gcc 无法将 gcc 项识别为 cmdlet 函数 脚本文件或可运行程序的名称 请检查名称的拼写 如果包括路径 请确保路径正确 然后再试一次 所在位置 行 1 字
  • YUV学习,详解

    YUV 格式详解 只看这一篇就够了 分类标准 首先 我们可以将YUV格式按照数据大小分为三个格式 YUV420 YUV422 YUV444 由于人眼对Y的敏感度远超于对u和v的敏感度 所以有时候可以多个Y分量共用一组uv 这样既可以极大的节
  • Dreaming to Distill: Data-free Knowledge Transfer via DeepInversion

    Dreaming to Distill Data free Knowledge Transfer via DeepInversion 1 论文信息 论文标题 Dreaming to Distill Data free Knowledge T
  • java基础语法(精简版)

    文章目录 目录 文章目录 一 运算符 1 算数运算符 2 赋值运算符 3 关系运算符 比较运算符 4 逻辑运算符 5 三元运算符 6 字符的 操作 7 字符串的 操作 二 流程控制语句 1 顺序结构 2 分支结构 1 if语句 2 swit