首页 > 编程语言 >java基础知识汇总(二)

java基础知识汇总(二)

时间:2024-07-31 20:07:15浏览次数:15  
标签:语句 循环体 java 汇总 基础知识 运算符 false 执行 表达式

PART1:变量与数据类型

  1. Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间。
    内存分配图示

    • 整数默认:int
    • 小数默认:double
  2. 数据类型图示1
    数据类型图示2

  3. 使用变量注意事项:

    • 作用域:变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。
    • 初始化值:没有初始化值不能直接使用。
    • 在一行上建议只定义一个变量:可以定义多个,但是不建议。
    • +是一个运算符, 我们应该能够看懂,做数据的加法。
    • boolean类型不能转换为其他的数据类型。
    • 默认转换:byte,short,char—int—long—float—double
      • byte,short,char相互之间不转换,他们参与运算首先转换为int类型
    • 强制转换:目标类型 变量名=(目标类型)(被转换的数据);

面试题:
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?

思考题:
byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?
练习:byte b = 300;

请写出下列程序结果
System.out.println(’a’);
System.out.println(’a’+1);

System.out.println(”hello”+’a’+1);
System.out.println(’a’+1+”hello”);
System.out.println(”5+5=”+5+5);
System.out.println(5+5+”=5+5”);

PART 2:算术、赋值运算符:

1.算术运算符:
算术运算符图示
+,-,*,/都是比较简单的操作,简单演示即可
+的几种作用:

  • 加法
  • 正数
  • 字符串连接符
    除法的时候要注意一个问题:
  • 整数相除,只能得到整数
  • 要想得到小数,可以*1.0

/和%的区别:
++和--的应用

  • 单独使用效果相同
  • 参与运算使用,在操作数的前后效果不同

符号:

  • = , +=, -=, *=, /=, %=
  • =为基本的赋值运算符,其他的为扩展的赋值运算符

如下操作写出结果
int a,b; a = b = 10;
System.out.println(a); System.out.println(b);
int a = 10; a += 20; System.out.println(a);

面试题
short s=1, s = s+1; short s=1, s+=1;
上面两个代码有没有问题,如果有,那里有问题

PART 3:关系、逻辑、位运算符

关系运算符:

  • 注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。
  • 注2:比较运算符“==”不能误写成“=”。

关系运算符图示

逻辑运算符:

  • 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
  • “&”和“&&”的区别:
    • 单&时,左边无论真假,右边都进行运算;
    • 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
    • “|”和“||”的区别同理,双或时,左边为真,右边不参与运算。

逻辑运算符图示

位运算符:

  • 位运算是直接对二进制进行运算。
    位运算符图示

三目运算符:

  • 格式:(关系表达式)?表达式1:表达式2;
    • 如果条件为true,运算后的结果是表达式1;
    • 如果条件为false,运算后的结果是表达式2;
  • 示例:
    int x=3,y=4,z;
    z = (x>y)?x:y;//z变量存储的就是两个数的大数。
    

条件运算符练习:

  • 获取两个整数中的最大值
  • 获取三个整数中的最大值
  • 比较两个整数是否相同

注意:

  • 目前在写案例的时候,如果我没有说明数据是什么类型的,默认是int类型的。

PART 4:Scanner if语句

键盘录入数据概述

  • 我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以,我准备把数据改进为键盘录入,提高程序的灵活性。

如何实现键盘录入数据呢?(目前先记住使用)

  • 导包(位置放到class定义的上面):import java.util.Scanner;
  • 创建对象:Scanner sc = new Scanner(System.in);
  • 接收数据:int x = sc.nextInt();

流程控制语句:

  • 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。

流程控制语句分类

  1. 顺序结构
  2. 选择结构
  3. 循环结构

顺序结构:

  • 是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,自上而下,依次执行,程序中大多数的代码都是这样执行的。
  • 总的来说:写在前面的先执行,写在后面的后执行。

顺序结构图示

选择结构:

也被称为分支结构。
选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。
Java语言提供了两种选择结构语句

  • if语句
  • switch语句

if语句:

if语句有三种格式

if语句第一种格式:

if(关系表达式) {
    语句体
}

执行流程

  • 首先判断关系表达式看其结果是true还是false
  • 如果是true就执行语句体
  • 如果是false就不执行语句体

if语句图1

注意事项:

  • 关系表达式无论简单还是复杂,结果必须是boolean类型
  • if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。
  • 一般来说:有左大括号就没有分号,有分号就没有左大括号

if语句第二种格式:

if(关系表达式) {
    语句体1;
}else {
    语句体2;
}

执行流程

  • 首先判断关系表达式看其结果是true还是false
  • 如果是true就执行语句体1
  • 如果是false就执行语句体2

if语句图2

我们前面讲解过三元运算符,它根据比较判断后,给出的也是两个结果,所以,这种情况和if语句的第二种格式很相似,他们在某些情况下应该是可以相互转换的。

if语句第二种格式和三元运算符

  • 三元运算符的操作都可以使用if语句改进,反之不成立
  • 什么时候不成立呢?
    • 当if语句控制的语句体是一条输出语句的时候,就不成立。因为三元运算符是一个运算符,必须要求有一个结果返回。
    • 而输出语句却不能作为一个返回结果。

if语句第三种格式:

if(关系表达式1) {
    语句体1;
}else  if (关系表达式2) {
    语句体2;
}
// ...
else {
    语句体n+1;
}

执行流程

  • 首先判断关系表达式1看其结果是true还是false
  • 如果是true就执行语句体1
  • 如果是false就继续判断关系表达式2看其结果是true还是false
  • 如果是true就执行语句体2
  • 如果是false就继续判断关系表达式…看其结果是true还是false
  • 如果没有任何关系表达式为true,就执行语句体n+1。

if语句图3

PART 5:switch语句 for循环

switch语句格式:

switch(表达式) {
    case 值1:
        语句体1;
        break;
    case 值2:
        语句体2;
        break;
    // ...
    default:
        语句体n+1;
        break;
}

格式解释

  • switch表示这是switch语句
  • 表达式的取值:byte,short,int,char
  • JDK5以后可以是枚举
  • JDK7以后可以是String
  • case后面跟的是要和表达式进行比较的值
  • 语句体部分可以是一条或多条语句
  • break表示中断,结束的意思,可以结束switch语句
  • default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。

执行流程

  • 首先计算出表达式的值
  • 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
  • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

switch语句图

注意事项

  • case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的。
  • default可以省略吗?
    • 可以省略。一般不建议。除非判断的值是固定的(单选题)。
  • break可以省略吗?
    • 可以省略,一般不建议。否则结果可能不是你想要的。
  • default的位置一定要在最后吗?
    • 可以出现在switch语句任意位置。
  • switch语句的结束条件
    • 遇到break
    • 执行到程序的末尾

switch语句练习:

  • 模拟做单项选择题,根据你的选择,给出对应的答案。(表达式是字符的情况)
  • 键盘录入字符串,根据给定的字符串,来输出你选择的字符串是什么?(表达式是字符串的情况)
  • 用switch语句实现键盘录入月份,输出对应的季节
  • 看程序写结果

选择结构(各自使用场景):

  • 在做判断的时候,我们有两种选择,if语句和switch语句,那么,我们到底该如何选择使用那种语句呢?
  • if语句使用场景:
    • 针对结果是boolean类型的判断
    • 针对一个范围的判断
    • 针对几个常量值的判断
  • switch语句使用场景:
    • 针对几个常量值的判断

循环结构:

  • 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。

循环语句的组成

  • 初始化语句:
    • 一条或者多条语句,这些语句完成一些初始化操作。
  • 判断条件语句:
    • 这是一个boolean表达式,这个表达式能决定是否执行循环体。
  • 循环体语句:
    • 这个部分是循环体语句,也就是我们要多次做的事情。
  • 控制条件语句:
    • 这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。

for循环语句格式:

for(初始化语句;判断条件语句;控制条件语句) {
    循环体语句;
}

执行流程

  • A:执行初始化语句
  • B:执行判断条件语句,看其结果是true还是false
    • 如果是false,循环结束。
    • 如果是true,继续执行。
  • C:执行循环体语句
  • D:执行控制条件语句
  • E:回到B继续

for循环图

注意事项

  • 判断条件语句的结果是一个boolean类型。
  • 循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
  • 一般来说:有左大括号就没有分号,有分号就没有左大括号。

for循环练习:

  • 请在控制台输出数据1-10。
  • 请在控制台输出数据10-1。
  • 求出1-10之间数据之和。
  • 求出1-100之间偶数和。
  • 求出1-100之间奇数和。
  • 求5的阶乘。
  • 在控制台输出所有的”水仙花数”。
  • 统计”水仙花数”共有多少个。
  • 请在控制台输出满足如下条件的五位数:
    • 个位等于万位。
    • 十位等于千位。
    • 个位+十位+千位+万位=百位。
  • 请统计1-1000之间同时满足如下

条件的数据有多少个:

  • 对3整除余2
  • 对5整除余3
  • 对7整除余2

选择结构(各自使用场景):

  • 在做判断的时候,我们有两种选择,if语句和switch语句,那么,我们到底该如何选择使用那种语句呢?
  • if语句使用场景:
    • 针对结果是boolean类型的判断
    • 针对一个范围的判断
    • 针对几个常量值的判断
  • switch语句使用场景:
    • 针对几个常量值的判断

循环结构:

  • 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。

循环语句的组成

  • 初始化语句:
    • 一条或者多条语句,这些语句完成一些初始化操作。
  • 判断条件语句:
    • 这是一个boolean表达式,这个表达式能决定是否执行循环体。
  • 循环体语句:
    • 这个部分是循环体语句,也就是我们要多次做的事情。
  • 控制条件语句:
    • 这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。

for循环语句格式:

for(初始化语句; 判断条件语句; 控制条件语句) {
    循环体语句;
}

执行流程

  • A: 执行初始化语句
  • B: 执行判断条件语句,看其结果是true还是false
    • 如果是false,循环结束。
    • 如果是true,继续执行。
  • C: 执行循环体语句
  • D: 执行控制条件语句
  • E: 回到B继续

注意事项

  • 判断条件语句的结果是一个boolean类型。
  • 循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
  • 一般来说:有左大括号就没有分号,有分号就没有左大括号。

for循环练习:

  • 请在控制台输出数据1-10。
  • 请在控制台输出数据10-1。
  • 求出1-10之间数据之和。
  • 求出1-100之间偶数和。
  • 求出1-100之间奇数和。
  • 求5的阶乘。
  • 在控制台输出所有的”水仙花数”。
  • 统计”水仙花数”共有多少个。
  • 请在控制台输出满足如下条件的五位数:
    • 个位等于万位。
    • 十位等于千位。
    • 个位+十位+千位+万位=百位。
  • 请统计1-1000之间同时满足如下条件的数据有多少个:
    • 对3整除余2。
    • 对5整除余3。
    • 对7整除余2。

点赞评论加关注,下期出练习答案

标签:语句,循环体,java,汇总,基础知识,运算符,false,执行,表达式
From: https://www.cnblogs.com/xu-sy122/p/18335358

相关文章

  • Java IO模型
    Java的IO分为两大类,一类是传统的IO(BlockingIO),一类是NIO(NewIO)。传统的IO基于字节流和字符流,以阻塞式IO操作为主。常用的类有FileInputStream、FileOutputStream、InputStreamReader、OutputStreamWriter等。这些类在读写数据时,会导致执行线程阻塞,直到操作完成。Java......
  • Java计算机毕业设计家具商城系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着人们生活水平的提高和消费观念的转变,家具作为居家生活的重要组成部分,其市场需求日益多样化与个性化。传统家具销售模式受限于地域、时间等因素,难......
  • Java计算机毕业设计家政服务网(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着现代生活节奏的加快和家庭结构的变化,家政服务需求日益增长,成为现代都市生活中不可或缺的一部分。然而,传统家政服务市场存在信息不对称、服务质量......
  • java -- Lambda表达式详细介绍
    java中的Lambda表达式是Java8引入的一个重要特性,它提供了一种清晰且简洁的方式来表示单个方法的接口(也被称为函数式接口)的实例。Lambda表达式使得编写匿名内部类(尤其是那些仅实现了一个方法的接口)变得更加简洁和易于理解。基本语法Lambda表达式的基本语法如下:(parameter......
  • Java计算机毕业设计健身房管理系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着健康意识的不断提升,健身房已成为现代人追求健康生活的重要场所。然而,随着会员数量的激增和健身项目的多样化,传统的人工管理方式已难以满足健身房......
  • Java还是C#?我该如何选择?给年轻人的建议...
    一.年轻人应该通吃其实这不应该是我们真正的主题,而且入了行的也很少会java还是c#这么比,但初学的,java和c#往往就代表了两大流派,java代替了j2ee,c#代替了.net,ok,没有关系,这么作为title,不影响我们说事。C#和Java这俩代码风格常相似,小孩子和老人才做选择,年轻人当然通吃!本人老年不正经......
  • JAVA8 collect 使用
    List<Student>studentList=Lists.newArrayList(newStudent("路飞",22,175),newStudent("红发",40,180),newStudent("白胡子",50,185),newStudent("白胡子",60,185));//最大值Optional&......
  • Java图片处理Thumbnailator
    原文链接:https://zhuanlan.zhihu.com/p/604121848 Thumbnailator是Google开源的优秀图片处理的第三方Java类库,比JDK自带的库要好用的多。官网Github地址Maven依赖目前最新版本是0.4.19<dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</a......
  • Java并发(十六)一文搞懂Java 线程池原理
    简介什么是线程池线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。为什么要用线程池如果并发请求数量很多,但每个线程执行的时间很短,就会出现频繁的创建和销毁线程。如此一来,会大大降低系统的效率,可能频繁创建和销毁线程的时间......
  • Javaweb项目|基于SpringBoot的企业客户管理系统的设计与实现【源码+论文+PPT+部署视频
    我们提供多元化的技术项目服务,涵盖Java、PHP、Python等编程语言,以及前端开发、人工智能、大数据、单片机开发、ASP.NET、物联网等领域。我们还提供简历模板、面试题库和学习资料,帮助用户提升技术能力和就业竞争力。我们的服务内容包括:免费功能设计、任务书和开题报告撰写、中......