[Java基础]基本概念(下)运算符,表达式和语句,分支,循环,方法,变量的作用域,递归调用

简介: 在上一篇文章[Java基础]基本概念(上)(标识符,关键字,基本数据类型)_小王师傅66的博客-CSDN博客中,我们学习了Java基础基本概念中的标识符,关键字,基本数据类型。这篇文章,我们将学习:运算符,表达式和语句,分支,循环,方法,变量的作用域,递归调用。

 在上一篇文章[Java基础]基本概念(上)(标识符,关键字,基本数据类型)_小王师傅66的博客-CSDN博客中,我们学习了Java基础基本概念中的标识符,关键字,基本数据类型。这篇文章,我们将学习:运算符,表达式和语句,分支,循环,方法,变量的作用域,递归调用


运算符:

Java中支持的运算符:


算数运算符 +,-,*,/,%,++,--
关系运算符 >, >=, <, <=, <>, !=, ==
逻辑运算符 !, &, |, ^, &&, ||
位运算符 ~, &, |, ^, <<, >>, >>>
赋值运算符 =
扩展赋值运算符 +=, -=, *=, /=
字符串连接运算符 +


算术运算符

++或--:符号在数字后面,先运算再取值;否则,先取值后运算;

int i = 0;
int j = i++; // j = 0, i = 1
等同于:
int j = i;
i = i + 1;



int i = 0;
int j = ++i; // j = 1, i = 1
等同于
i = i + 1;
int j = i;


逻辑运算符

!:逻辑非, &:逻辑与, |:逻辑或, ^:逻辑异或, &&:短路与, ||:短路或


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


&&:符号左边为false时,停止运算;

||:符号左边为true时,停止运算;

字符串连接运算符:

+:+两边只要有一个操作数是字符串类型,系统自动将另一个操作数转为字符串类型,再进行字符串连接。

当进行打印时,打印的对象无论是否是字符串,都转成字符串打印。


表达式:

java表达式由运算符和操作数构成。运算符代表运算的动作,操作数是要操作的数据。操作数可以是常量也可以是变量。表达式的类型由运算结果的类型决定。


语句:

包括三大类:顺序,选择,循环。


语句
顺序语句

自上而下一句一句执行;

(按照地址内容的顺序执行指令)


12.png

方法:



 Java中的方法类似于其他语言的函数,是用于完成特定功能的片段。


       形式:[修饰符1 修饰符2 ...] 返回值类型 方法名(形参列表){


               java 语句


       }


      1) 形式参数:被调用方法上用于接收外界输入的参数;


      2) 实际参数:调用方法时传给方法的参数;


      3)返回值:方法执行完成后返回给调用环境的数据;


      4)返回值类型:事先约定好的返回值类型;如果没有返回值,用void;必须给出返回值类型。


      5)方法的调用方式:对象.方法名(实参列表);


      6)实参的数目,数据类型,次序和调用方法所声明的形参列表要一一对应。


      7)return方法终止方法执行并指定要返回的数据。


      8)Java中,进行函数调用中遵循的传值原则:基本数据类型传的是值本身;引用数据类型传的对象的引用,而不是对应本身。


变量的作用域:



按作用域区分变量,可以将变量分为局部变量,成员变量。

       局部变量,声明在方法体中,出了方法不能使用。

       成员变量,声明在类中,方法的外部,用于描述类的属性。


递归调用:


递归调用指方法调用过程中,出现该方法本身的调用。比如使用递归解决Fabonacci数列。


斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34,55,89...


这个数列从第3项开始,每一项都等于前两项之和。


方法定义是:F[n]=F[n-1]+F[n-2](n>=2,F[0]=1,F[1]=1)


比如,我们求第12个数是多少

public class Fibonacci {
    public static void main(String[] args) {
        System.out.println(f(12));
    }
    public static int f(int n) {
        if (n == 1 || n == 1) {
            return n;
        }
        System.out.println("n = " + n);
        return f(n - 1) + f(n - 2);
    }
}

输出:n = 144.

递归调用一定要有终止条件,在这个函数中,终止方法执行的语句是:

if(n == 1 || n == 2){
        return n;
}


如果不用递归怎么实现呢?

 public static void main(String[] args) {
    System.out.println("非递归实现:" + ff(12));
 } 
 public static int ff(int n) {
    if (n <= 0) {
        return -1;
    }
    if (n == 1 || n == 2) {
        return 1;
    }
    int pre = 1;
    int prePre = 1;
    int result = 0;
    for (int i = 3; i <= n; i++) {
        result = pre + prePre;
        prePre = pre;
        pre = result;
    }
    return result;
 }




从代码量上可以看出,用递归实现更加简洁明了。


我们总结一下这Java基础两篇文章中的重点:


1、标识符:用于给类,方法,变量,自定义数据类型命名,凡是可以自己定义的,都是标识符。


2、关键字:Java事先给定义好的标识符,对编译器有特殊意义。比如:if else, static,final,public等。关键字不能用作类名,方法名,变量名等。标识符可以包含关键字。


3、常量:第一次赋值后就不能改变的变量。


4、变量:是程序中最基本的存储单元,代表内存中的一小块区域。不同类型的变量在内存中占用的存储空间长度不同。在程序中通过变量名访问变量。因此,变量要先定义,再赋值,再使用。


程序执行时会被操作系统加载到内存,执行时将内存分为4块区域:


heap-存放new出来的对象,stack-局部变量,data segment-存放静态变量,字符串常量,code segment-存放代码;


按被声明的位置分,分为:局部变量,成员变量。局部变量作用于方法内;成员变量作用于整个对象,修饰对象的属性。


按类型分4类8种;


4类:逻辑型;字符型;数值型;浮点型;


8种:char,byte,short,int,long,double,float,boolean


boolean不能和其他类型相互转化;


容量小的能自动转成容量大的;容量大的转成容量小的可能有精度损失或溢出。


char,byte,short要转成int,才能运算;多种类型混合计算时,自动转成大类型后再进行运算;


数值型默认是int类型;浮点型默认是double类型。


5、语句:顺序,选择,循环;


选择:Switch注意默认值问题,case击穿问题,推荐使用break。


循环:for,while,do...while。while循环符合条件才执行;do...while 无论是否符合条件都会执行一次。


6、方法:


修饰符,返回值类型,方法名,形参列表。形参和实参的区别。


递归调用等。


       希望这两篇Java基础学习的文章能给你带来帮助。



相关文章
|
5月前
|
Java 编译器 Go
【Java】(5)方法的概念、方法的调用、方法重载、构造方法的创建
Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用方法的优点使程序变得更简短而清晰。有利于程序维护。可以提高程序开发的效率。提高了代码的重用性。方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson。这种就属于驼峰写法下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。
276 4
|
7月前
|
安全 Java
Java中的Switch表达式:更简洁的多路分支
Java中的Switch表达式:更简洁的多路分支
586 211
|
7月前
|
Java
Java编程:理解while循环的使用
总结而言, 使用 while 迴圈可以有效解决需要多次重复操作直至特定條件被触发才停止執行任务场景下问题; 它简单、灵活、易于实现各种逻辑控制需求但同时也要注意防止因邏各错误导致無限迁璇発生及及時處理可能発生异常以确保程序稳定运作。
543 0
|
8月前
|
存储 缓存 NoSQL
java 集合入门基础理论的核心概念与实用长尾知识
本文介绍了Java集合框架的基础理论知识,包括单列集合(List、Set、Queue)和双列集合(Map)的特点及常用实现类(如ArrayList、HashSet、HashMap等)。详细讲解了集合的遍历方式(迭代器、增强for循环、Lambda表达式)和典型应用场景(如数据去重、键值存储等)。通过具体代码示例,帮助初学者理解集合框架的核心概念和实际应用,为Java编程中的数据存储与管理提供基础指导。
211 0
|
9月前
|
存储 安全 Java
2025 年最新 40 个 Java 基础核心知识点全面梳理一文掌握 Java 基础关键概念
本文系统梳理了Java编程的40个核心知识点,涵盖基础语法、面向对象、集合框架、异常处理、多线程、IO流、反射机制等关键领域。重点包括:JVM运行原理、基本数据类型、封装/继承/多态三大特性、集合类对比(ArrayList vs LinkedList、HashMap vs TreeMap)、异常分类及处理方式、线程创建与同步机制、IO流体系结构以及反射的应用场景。这些基础知识是Java开发的根基,掌握后能为后续框架学习和项目开发奠定坚实基础。文中还提供了代码资源获取方式,方便读者进一步实践学习。
2375 2
|
9月前
|
分布式计算 Java 大数据
Java 语言基础概念与常识之主要特点解析
Java是一种广泛应用于企业级开发、移动应用(如Android)、大数据处理及云计算等领域的编程语言。其核心特点包括跨平台性(一次编写,到处运行)、面向对象设计、自动垃圾回收、多线程支持和高性能表现。Java通过JVM实现跨平台,具备强大的健壮性和安全性,同时拥有丰富的标准库与活跃的开发者社区。本文深入解析Java的技术优势及其在电商系统、大数据处理和云计算中的实际应用,并提供相关面试资料供学习参考。
245 0
|
12月前
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
228 13
|
传感器 安全 Java
《从头开始学java,一天一个知识点》之:循环结构:for与while循环的使用场景
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问&quot;`a==b`和`equals()`的区别&quot;,大脑突然空白
354 22
|
存储 传感器 缓存
java变量与数据类型:整型、浮点型与字符类型
### Java数据类型全景表简介 本文详细介绍了Java的基本数据类型和引用数据类型,涵盖每种类型的存储空间、默认值、取值范围及使用场景。特别强调了`byte`、`int`、`long`、`float`、`double`等基本类型在不同应用场景中的选择与优化,如文件流处理、金融计算等。引用数据类型部分则解析了`String`、数组、类对象、接口和枚举的内存分配机制。
448 15