java-基础语法(一)

news2024/12/23 18:15:48

java-基础语法(一)

在这里插入图片描述

一、java变量

1.1、注释

  • 单行注释 //
     // 这是单行注释文字
    
  • 多行注释 /* */
    /*
    这是多行注释文字
    这是多行注释文字
    这是多行注释文字
    */
    注意:多行注释不能嵌套使用。
    

1.2 常量

常量:在程序运行过程中,其值不可以发生改变的量。

Java中的常量分类:

字符串常量 用双引号括起来的多个字符(可以包含0个、一个或多个),例如"a"、“abc”、"中国"等

整数常量 整数,例如:-10、0、88等

小数常量 小数,例如:-5.5、1.0、88.88等

字符常量 用单引号括起来的一个字符,例如:‘a’、‘5’、‘B’、'中’等

布尔常量 布尔值,表示真假,只有两个值true和false

空常量 一个特殊的值,空值,值为null

除空常量外,其他常量均可使用输出语句直接输出。

1.3 数据类型

Java是一个强类型语言,Java中的数据必须明确数据类型。在Java中的数据类型包括基本数据类型和引用数据类型两种。

Java中的基本数据类型:

数据类型关键字内存占用取值范围
整数类型byte1-128~127
short2-32768~32767
int(默认)4-2的31次方到2的31次方-1
long8-2的63次方到2的63次方-1
浮点类型float4负数:-3.402823E+38到-1.401298E-45
正数: 1.401298E-45到3.402823E+38
double(默认)8负数:-1.797693E+308到-4.9000000E-324
正数:4.9000000E-324 到1.797693E+308
字符类型char20-65535
布尔类型boolean1true,false

说明

​ e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方。

​ 在java中整数默认是int类型,浮点数默认是double类型。

1.4 变量

  • 变量:在程序运行过程中,其值可以发生改变的量。

    从本质上讲,变量是内存中的一小块区域,其值可以在一定范围内变化。

  • 变量的定义格式

    数据类型 变量名 = 初始化值; // 声明变量并赋值
    int age = 18;
    
    // 先声明,后赋值(使用前赋值即可)
    数据类型 变量名;
    变量名 = 初始化值;
    double money;
    money = 55.5;
    

    还可以在同一行定义多个同一种数据类型的变量,中间使用逗号隔开。但不建议使用这种方式,降低程序的可读性。

    int a = 10, b = 20; // 定义int类型的变量a和b,中间使用逗号隔开
    
    int c,d; // 声明int类型的变量c和d,中间使用逗号隔开
    c = 30;
    d = 40;
    
  • 使用变量时的注意事项

    1. 在同一对花括号中,变量名不能重复
    2. 变量在使用之前,必须初始化(赋值)
    3. 定义long类型的变量时,需要在整数的后面加L(大小写均可,建议大写)。因为整数默认是int类型,整数太大可能超出int范围。
    4. 定义float类型的变量时,需要在小数的后面加F(大小写均可,建议大写)。因为浮点数的默认类型是double, double的取值范围是大于float的,类型不兼容。

1.5 标识符

标识符是用户编程时使用的名字,用于给方法变量常量等命名。

  • Java中标识符的组成规则:
    ​ 由字母数字下划线“_”、美元符号“$”组成,第一个字符不能是数字。
    不能使用java中的关键字作为标识符。
    标识符对大小写敏感(区分大小写)。

  • Java中标识符的命名约定:
    小驼峰式命名变量名方法名
    首字母小写,从第二个单词开始每个单词的首字母大写。

    大驼峰式命名类名
    每个单词的首字母都大写。

另外,标识符的命名最好可以做到见名知意
例如:username、studentNumber等。

1.6 类型转换

在Java中,一些数据类型之间是可以相互转换的。分为两种情况:自动类型转换强制类型转换

自动类型转换

​ 把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量。这种转换方式是自动的,直接书写即可。

例如:

double num = 10; // 将int类型的10直接赋值给double类型
System.out.println(num); // 输出10.0

强制类型转换

​ 把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量。强制类型转换格式:目标数据类型 变量名 = (目标数据类型)值或者变量;

​ 例如:

double num1 = 5.5;
int num2 = (int) num1; // 将double类型的num1强制转换为int类型
System.out.println(num2); // 输出5(小数位直接舍弃)

在这里插入图片描述

说明:

  1. char类型的数据转换为int类型是按照码表中对应的int值进行计算的。比如在ASCII码表中,'a’对应97。

    int a = 'a';
    System.out.println(a); // 将输出97
    
  2. 整数默认是int类型,byte、short和char类型数据参与运算均会自动转换为int类型。

    byte b1 = 10;
    byte b2 = 20;
    byte b3 = b1 + b2; 
    // 第三行代码会报错,b1和b2会自动转换为int类型,计算结果为int,int赋值给byte需要强制类型转换。
    // 修改为:
    int num = b1 + b2;
    // 或者:
    byte b3 = (byte) (b1 + b2);
    
  3. boolean类型不能与其他基本数据类型相互转换。

二、运算符

2.1 算术运算符

符号作用说明
+参看小学一年级
-参看小学一年级
*参看小学二年级,与“×”相同
/参看小学二年级,与“÷”相同
%取余获取的是两个数据做除法的余数

注意

/%的区别:两个数据做除法,/取结果的商,%取结果的余数。 整数操作
只能得到整数,要想得到小数,必须有浮点数参与运算。

  • 数值的“+”操作

    int a = 10;
    int b = 20;
    int c = a + b;
    
  • 字符的“+”操作

    char类型参与算术运算,使用的是计算机底层对应的十进制数值。

    ‘a’ – 97 a-z是连续的,所以’b’对应的数值是98,'c’是99,依次递加

    ‘A’ – 65 A-Z是连续的,所以’B’对应的数值是66,'C’是67,依次递加

    ‘0’ – 48 0-9是连续的,所以’1’对应的数值是49,'2’是50,依次递加

    // 可以通过使用字符与整数做算术运算,得出字符对应的数值是多少
    char ch1 = 'a';
    System.out.println(ch1 + 1); // 输出98,97 + 1 = 98
    
    char ch2 = 'A';
    System.out.println(ch2 + 1); // 输出66,65 + 1 = 66
    
    char ch3 = '0';
    System.out.println(ch3 + 1); // 输出49,48 + 1 = 49
    

    算术表达式中包含不同的基本数据类型的值的时候,整个算术表达式的类型会自动进行提升。

    提升规则:
    byte类型,short类型和char类型将被提升到int类型,不管是否有其他类型参与运算。
    整个表达式的类型自动提升到与表达式中最高等级的操作数相同的类型
    等级顺序:byte,short,char --> int --> long --> float --> double

  • 字符串的“+”操作

    当“+”操作中出现字符串时,这个”+”是字符串连接符,而不是算术运算。

    System.out.println("hello"+ 666); // 输出:hello666
    

    在”+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行“+”操作时,从左到右逐个执行。

    System.out.println(1 + 5 + "等于6"); // 输出:6等于6
    System.out.println(1 + 2 + "hello" + 3 + 4); // 输出:3hello34
    // 可以使用小括号改变运算的优先级 
    System.out.println(1 + 2 + "hello" + (3 + 4)); // 输出:3hello7
    

2.2赋值运算符

赋值运算符的作用是将一个表达式的值赋给左边,左边必须是可修改的,不能是常量。

符号作用说明
=赋值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

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

short s = 10;
s = s + 10; // 此行代码报出,因为运算中s提升为int类型,运算结果int赋值给short可能损失精度

s += 10; // 此行代码没有问题,隐含了强制类型转换,相当于 s = (short) (s + 10);

2.3 自增自减运算符

符号作用说明
++自增变量的值加1
自减变量的值减1

注意事项:

++和-- 既可以放在变量的后边,也可以放在变量的前边。

单独使用的时候, ++和-- 无论是放在变量的前边还是后边,结果是一样的。

参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者–。

参与操作的时候,如果放在变量的前边,先拿变量做++或者–,后拿变量参与操作。

最常见的用法:单独使用。

int i = 10;
i++; // 单独使用
System.out.println("i:" + i); // i:11

int j = 10;
++j; // 单独使用
System.out.println("j:" + j); // j:11

int x = 10;
int y = x++; // 赋值运算,++在后边,所以是使用x原来的值赋值给y,x本身自增1
System.out.println("x:" + x + ", y:" + y); // x:11,y:10

int m = 10;
int n = ++m; // 赋值运算,++在前边,所以是使用m自增后的值赋值给n,m本身自增1
System.out.println("m:" + m + ", m:" + m); // m:11,m:11

2.4 关系运算符

关系运算符有6种关系,分别为小于小于等于大于等于大于等于不等于

符号说明
==a==b,判断a和b的值是否相等,成立为true,不成立为false
!=a!=b,判断a和b的值是否不相等,成立为true,不成立为false
>a>b,判断a是否大于b,成立为true,不成立为false
>=a>=b,判断a是否大于等于b,成立为true,不成立为false
<a<b,判断a是否小于b,成立为true,不成立为false
<=a<=b,判断a是否小于等于b,成立为true,不成立为false

注意事项:
关系运算符的结果都是boolean类型,要么是true,要么是false。

2.5 逻辑运算符

逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false

符号作用说明
&逻辑与a&b,a和b都是true,结果为true,否则为false
|逻辑或a|b,a和b都是false,结果为false,否则为true
^逻辑异或a^b,a和b结果不同为true,相同为false
!逻辑非!a,结果和a的结果正好相反

短路逻辑运算符

符号作用说明
&&短路与作用和&相同,但是有短路效果
||短路或作用和|相同,但是有短路效果

在逻辑与运算中,只要有一个表达式的值为false,那么结果就可以判定为false了,没有必要将所有表达式的值都计算出来,短路与操作就有这样的效果,可以提高效率。同理在逻辑或运算中,一旦发现值为true,右边的表达式将不再参与运算。

  • 逻辑与&,无论左边真假,右边都要执行。

  • 短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行。

  • 逻辑或|,无论左边真假,右边都要执行。

  • 短路或||,如果左边为假,右边执行;如果左边为真,右边不执行。

2.6 三元运算符

三元运算符语法格式:

关系表达式 ? 表达式1 : 表达式2;

解释:问号前面的位置是判断的条件,判断结果为boolean型,为true时调用表达式1,为false时调用表达式2。其逻辑为:如果条件表达式成立或者满足则执行表达式1,否则执行第二个。

int a = 10;
int b = 20;
int c = a > b ? a : b; // 判断 a>b 是否为真,如果为真取a的值,如果为假,取b的值

Ending…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/603510.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Arthas-monitor/watch/trace 相关命令使用

tip&#xff1a;作为程序员一定学习编程之道&#xff0c;一定要对代码的编写有追求&#xff0c;不能实现就完事了。我们应该让自己写的代码更加优雅&#xff0c;即使这会费时费力。 开头&#xff1a; 本章所有的命令都非常重要&#xff0c;都是使用率相当高的。 文章目录 moni…

python---列表

列表 1. 列表的介绍1.1 访问列表元素1.2 索引从0而不是1开始1.3 使用列表中的各个值1.4 修改、添加和删除元素1.4.1 修改列表元素 1.5 在列表中添加元素1.5.1 在列表末尾添加元素1.5.2 在列表中插入元素 1.6 从列表中删除元素1.6.1 使用方法pop()删除元素1.6.2 弹出列表中任何位…

【TreeSet集合】自然排序Comparator的使用

自然排序Comparator的使用 存储学生对象并遍历&#xff0c;创建TreeSet集合使用无参构造方法 要求&#xff1a;按照年龄从小到大排序&#xff0c;年龄相同时&#xff0c;按照姓名的字母顺序排序 创建学生类&#xff1a; package com.gather.set.treeset; public class Student…

【利用AI让知识体系化】前端开发学习了解业务架构

文章目录 I. 前端技术入门1.1 HTML/CSS/Javascript 简介1.2 前端框架 React/Vue/Angular 了解1.3 前端工具 Git/Webpack/npm/yarn 的使用1.4 前端调试和性能优化技巧 II. 开发综合应用2.1 工程化开发的全流程2.2 单页面应用 (SPA)2.3 数据交互和批量操作2.4 模块化和组件化开发…

压缩感知重构之匹配追踪算法

算法的重构是压缩感知中重要的一步&#xff0c;是压缩感知的关键之处。因为重构算法关系着信号能否精确重建&#xff0c;国内外的研究学者致力于压缩感知的信号重建&#xff0c;并且取得了很大的进展&#xff0c;提出了很多的重构算法&#xff0c;每种算法都各有自己的优缺点&a…

[golang 微服务] 4. gRPC介绍,Protobuf结合gRPC 创建微服务

一.gRPC框架的介绍 简介 gRPC是一个 高性能、 开源和 通用的 RPC 框架&#xff0c; 面向移动端和 HTTP/2 设计,目前提供 C、Java 和 Go语言版本&#xff0c;分别是&#xff1a;grpc, grpc-java, grpc-go,其中 C 版本支持 C, C, Node.js, Python, Ruby, Objective-C, PHP 和 C# …

Windows Pyqt5配置环境过程(pycharm Anaconda)

必要安装 Anaconda下载地址 Pycharm下载地址 这两个推荐2019年左右的版本就行了&#xff0c;安装的时候选择“add path” Anaconda换源 换源之后叉掉终端之后再创建环境 Anaconda常用命令 Anaconda换源应该是只对conda install 有用&#xff0c;pip还要换源 使用清华源进行…

java-集合

java-集合 一、集合体系结构 集合类的特点 ​ 提供一种存储空间可变的存储模型&#xff0c;存储的数据容量可以随时发生改变 集合类的体系图 ​ 二、单列集合 2.1 Collection集合&#xff08;接口&#xff09; Collection集合概述 是单列集合的顶层接口&#xff0c;它表示一…

汇编栈寄存器SS与SP使用

入栈时,栈段地址与偏移地址计算 使用a命令输入下面汇编,然后使用u命令查看 写入汇编指令到内存 修改CS:IP指向当前代码段 使用t命令执行汇编指令,详细执行如下图标号 注意每行指令执行后寄存器变化. 取内存段单元数据 将内存段单元数据送入寄存器, 多次送入数据到同一寄存…

chatgpt赋能python:Python分词处理的重要性

Python分词处理的重要性 随着互联网的飞速发展&#xff0c;大数据的普及与应用越来越广泛。人们需要从海量的数据中找到自己需要的信息。因此&#xff0c;自然语言处理技术被广泛应用&#xff0c;其中分词技术是自然语言处理中最基础的一项技术。 在这个领域中&#xff0c;Py…

JS逆向——借助playwright实现逆向

原理&#xff1a; 1.修改js文件&#xff0c;将加密方法设定为全局变量并调用。 2.使用playwright替换浏览器加载的js文件 3.在python中通过playwright实现js注入获取加密结果 实现&#xff1a; 以下面链接为例&#xff1a; Scrape | Movie 1.首先&#xff0c;要知道页面…

方法引用相关知识点

这里写目录标题 方法引用方法引用符简介代码演示 Lambda表达式支持的方法引用引用 类方法简介使用 引用对象的实例方法简介操作 引用类的实例方法简介具体代码 引用构造器简介代码演示 二级目录二级目录二级目录二级目录二级目录二级目录 方法引用 方法引用符 简介 注意 这里…

JDK SPI、Spring SPI、Dubbo SPI三种机制的细节与演化

JDK SPI、Spring SPI、Dubbo SPI三种机制的细节与演化 SPI机制 SPI机制的应用 JDBC中加载驱动 Spring SPI Dubbo SPI SPI深入理解 API与SPI的区别 ServiceLoader JDK SPI、Spring SPI、Dubbo SPI综合对比 SPI机制 Java SPI&#xff08;Service Provider Interface&am…

Linux4.3Apache配置与应用

文章目录 计算机系统5G云计算第一章 LINUX Apache配置与应用及网页优化一、构建虚拟 Web 主机二、基于域名的虚拟主机1.为虚拟主机提供域名解析2.为虚拟主机准备网页文档3.添加虚拟主机配置4.设置访问控制5.Options指令解释6.AllowOverride指令解释7.地址限制策略8.加载独立的配…

10个Chatgpt国内可用镜像网页

自 2022 年底推出以来&#xff0c; ChatGPT一直风靡全球&#xff0c;原因显而易见。革命性的聊天机器人 AI 可以完成数量惊人的任务&#xff0c;从进行对话到撰写整篇学期论文。此外&#xff0c;ChatGPT 可以做很多您不知道的事情——从制作品牌徽标到创作音乐等等。 根据Open…

浮点数在内存中的储存(C语言)

浮点数在内存中的储存 一、浮点数简介二、浮点数在内存中的储存1.IEEE 754标准2.单精度浮点数的内存储存3.双精度浮点数的内存储存4.IEEE 754对有效数字M和指数E&#xff0c;还有一些特别规定 三、总结 一、浮点数简介 浮点数是计算机科学中的一种数据类型&#xff0c;用于存储…

2023第四届中国奢侈品数字化创新峰会

2023第四届中国奢侈品数字化创新峰会将于6月26日-27日在上海召开。 此次会议将线上线下同步举行&#xff0c;重点讨论后疫情时代奢侈品行业主要的数字化战略与趋势&#xff0c;探讨数字化技术如何成为与消费者沟通的有效手段和关键媒介&#xff0c;如何做好线上消费者洞察&…

【HashSet集合】概述和特点

HashSet集合概述和特点 1.HashSet概述 HashSet在java.util包下&#xff0c;使用时需要到爆&#xff0c;它是set接口的一个实现类&#xff0c;它所存储的元素是不可重复的&#xff0c;并且元素都是无序的&#xff0c;HashSet是根据对象的哈希值来确定元素在集合中的存储位置&a…

代码随想录第48天

1.打家劫舍&#xff1a; 动规五部曲分析如下&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i]&#xff1a;考虑下标i&#xff08;包括i&#xff09;以内的房屋&#xff0c;最多可以偷窃的金额为dp[i]。 2.确定递推公式 决定dp[i]的因素就是第…

chatgpt赋能python:Python分词方法——NLP技术的重要组成部分

Python分词方法——NLP技术的重要组成部分 自然语言处理&#xff08;NLP&#xff09;是人工智能领域的热点研究方向之一。而分词作为NLP技术的重要组成部分&#xff0c;对于中文文本的处理尤为重要。Python作为一种便捷、易学、高效的编程语言&#xff0c;拥有丰富的分词工具。…