java 语法基础看这一篇文章就够了

news2024/12/23 22:57:06

第一章 关键字

  • 关键字的概念
1
被Java语言赋予了特殊含义,用作专门用途的字符串(单词)
  • 关键字特点
1
关键字中所有字母都是小写
  • 常见关键字
classinterfaceenumbyteshort
intfloatlongdoublechar
booleanvoidtruefalsenull
ifelseswitchcasedefault
whiledoforbreakcontinue
returnprivateprotectedpublicabstract
finalstaticsynchronizedextendsimplements
newthissuperinstanceoftry
catchfinallythrowthrowspackage
nativestrictfptransientvolatileassert
  • 保留字
1
保留字就是在当前Java语言中没有用到,但以后版本中可能会用到
castfuturegenericinneroperator
outerrestvargotoconst

第二章 标识符

  • 标识符概念
1
2
官方: Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符
通俗: 凡是自己可以起名字的地方都叫标识符
  • 标识符的定义规则
1
2
3
4
5
1. 由26个英文字母大小写,0-9 ,_或 $ 组成
2. 数字不可以开头
3. 不可以使用关键字和保留字,但能包含关键字和保留字
4. Java中严格区分大小写,长度无限制
5. 标识符不能包含空格
  • 注意事项
1
在起名字时,为了提高阅读性,要尽量有意义,"见名知意"
  • Java中的名称命名规范
1
2
3
4
包名:多单词组成时所有字母都小写:xxxyyyzzz,一般为公司域名的倒序 eg: com.alibaba   com.baidu
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

第三章 变量

第1节 变量的概念

1
2
3
4
1. 内存中的一个存储区域
2. 该区域有自己的名称(变量名)和类型(数据类型)
3. 该区域的数据可以在同一类型范围内不断变化
4. Java中每个变量必须先声明,后使用
  • 变量的格式
1
数据类型  变量名=初始化值
  • 变量的使用
1
变量是通过使用变量名来访问这块区域的

第2节 变量的分类

2.1 变量的分类(按数据类型)

1
为什么数据要分这么多种类型?这样的分类有什么好处?

2.2 变量的分类(按声明位置)

1
2
在方法体外,类体内声明的变量称为成员变量
在方法体内部声明的变量称为局部变量

 

注意事项: 局部变量除形参外,需显式初始化

第四章 数据类型

第1节 整数类型

1
2
3
4
5
byte、short、int、long

Java各整数类型有固定的表数范围和字段长度,不受具体OS的影响,以保证java程序的可移植性

Java的整型常量默认为 int 型,声明long型常量须后加"l"或"L" eg: long a=100L 或 long b=100l;
类 型占用存储空间表数范围
byte1字节=8bit-128 ~ 127
short2字节-2^15 ~2^15-1
int4字节-2^31 ~ 2^31-1
long8字节-2^63 ~ 2^63-1

第2节 浮点类型

1
2
3
4
5
6
7
8
9
float、double

与整数类型类似,Java 浮点类型也有固定的表数范围和字段长度,不受具体OS的影响

Java 的浮点型常量默认为double型,声明float型常量,须后加"f"或"F" eg: float f=11.1f 或 float f=12.1F

浮点型常量有两种表示形式:
	十进制数形式 : 如 5.12       512.0f        .512   (必须有小数点)
	科学计数法形式:如 5.12e2      512E2     100E-2
类 型占用存储空间表数范围
单精度float4字节-3.403E38 ~ 3.403E38
双精度double8字节-1.798E308 ~ 1.798E308
1
2
3
4
5
什么是单精度,什么是双精度
单精度: 指32位的浮点数,小数点后7位或者8位是准确的
双精度: 指64位的浮点数,小数点后16位是准确的

双精度表示的浮点数比单精度小数拥有更高的精度.

第3节 字符类型

1
2
3
4
5
6
7
8
9
10
11
char

char 型数据用来表示通常意义上"字符"(2字节)

字符型常量的三种表现形式:
1. 字符常量是用单引号('')括起来的单个字符,涵盖世界上所有书面语的字符 eg: char c1='1' char c2='A'
2. Java中还允许使用转义字符'\'来将其后的字符转变为特殊字符型常量 char c3 = '\n' //换行
3. 直接使用 Unicode 值来表示字符型常量  char c4='\u1234' //ሴ

char类型是可以和数值型数据进行运算的,因为它都对应有Unicode码
那么什么是Unicode码?了解Unicode码之前我们先说一下ASCII码
  • ASCII 码
1
2
3
4
5
6
7
8
9
10
11
上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定,被称为ASCII码

ASCII码占计算机存储的8位也就是一个byte(字节)共规定了128个字符的编码,只占了一个字节的后7位第8位统一规定为0

128个字符编码中比如常见的【空格】是32(二进制00100000) 大写字母【A】是65(二进制01000001)等.

缺点:
由于计算机是美国人发明的,在设计字符编码的时候只考虑到了美国的字符数量,ASCII码不能囊括全球所有的字符.

解决方案:
计算机被各个国家开始使用,所以每一个国家针对自己国家的符号,都设计了自己国家的编码方式,比如中国的GBK(国标码)

 

  • Unicode码
1
2
3
4
5
6
7
8
乱码: 由于各个国家都有自己的编码,美国使用ASCII码(A对应65)我们国家使用GBK(A不一定是65),所以如果我用我们国家的计算机编写的文件,发送到美国,美国计算机在打开的时候就会出现内容混乱的问题.这就是乱码产生的原因.

解决乱码的方式: 指定全球统一编码,将全球所有的字符全部以一种编码方式编进计算机中.这就是Unicode码的由来

缺点: Unicode码只是一个符号集,他只规定了符号的二进制代码却没有规定这个二进制应该如何存储或者说这个二进制代码在计算机中应该存几个字节.
char c1='中' char c2='A' 看这两个char类型在计算机存储的时候,第一个需要两个字节才能存下,而第二个只需要一个字节即可,我们Unicode码根本就区分不出来 c1和c2到底是使用Unicode码还是ASCII码进行编码.

所以针对Unicode码这个编码集,实现了Unicode码的存储方式,就是我们接下来的UTF-8编码
  • UTF-8
1
2
3
4
UTF-8是在互联网上使用最广的一种 Unicode 的实现方式
UTF-8是一种变长的编码方式。它可以使用1-6个字节表示一个符号,根据不同的符号而变化字节长度

所以UTF-8编码是后面我们学习的时候用的最多的编码方式

第4节 布尔类型

1
2
3
4
boolean

boolean 类型适于逻辑运算,一般用于程序流程控制(后面会讲到)
boolean类型数据只允许取值true和false

第5节 基本数据类型转换

1
2
3
4
5
6
7
自动类型转换:容量小的类型自动转换为容量大的数据类型

有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算

byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型

当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串类型

 

数据类型按容量大小排序 ↑↑↑↑↑↑↑↑↑↑

第6节 强制类型转换

1
2
3
4
将容量大的数据类型转换成容量小的数据类型叫强制转换 eg: 将 int 转成 byte
强制转换需要使用强制转换符号【(括号)】  eg: int a=100; byte b = (byte)a; //a是int型 b是byte型

注意:强制类型转换可能造成精度降低或者数据溢出.  boolean不能进行强制类型转换.

第五章 运算符

1
2
3
4
5
6
7
8
9
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等

运算符的分类:
1. 算术运算符
2. 赋值运算符
3. 比较运算符(关系运算符)
4. 逻辑运算符
5. 位运算符
6. 三元运算符

第1节 算术运算符

运算符介绍范例结果
+正号+11
-负号a=1; -a-1
+1+12
-1-10
*1*22
/2/21
%取模7%52
++
++
自增(前) 先运算后取值
自增(后) 先取值后运算
a=2;b=++a;
a=2;b=a++;
a=3;b=3
a=3;b=2

自减(前) 先运算后取值
自减(后) 先取值后运算
a=2;b=- -a;
a=2;b=a- -;
a=1;b=1
a=1;b=2
+字符串相加“1”+”1”“11”
1
2
3
4
5
注意: 
1. 如果对负数取模,可以把模数负号忽略不记 eg: 5%-2=1
2. 但被模数是负数则不可忽略 eg: -5%2=-1 当被模数为负数时,他的结果是不确定的
3. 对于除号("/")如果计算的是整数类型那么结果是整数 eg: 2/3=0,4/2=2
4. 对于除号("/")如果计算的是浮点类型那么结果是为浮点型 eg: 2.0/3=0.6666666666666666,4.0/2=2.0

第2节 赋值运算符

运算符介绍范例
=赋值int a=100;
+=加等int a=1;a+=1; // a=a+1;
-=减等int a=1;a-=1; // a=a-1;
*=乘等int a=1;a*=1; // a=a*1;
/=除等int a=1;a/=1; // a=a/1;
%=模等int a=1;a%=1; // a=a%1;
1
2
3
4
5
思考:
  short s = 3;
  s=s+2;  ①
  s+=2;   ②
①和②有什么区别?

第3节 比较运算符

运算符介绍范例结果
==判断两个数书否相等4==3false
!=不等于4!=3true
<小于4<3false
>大于4>3true
<=小于等于4<=3false
>=大于等于4>=3true
instanceof检查是否是类的对象“Hello” instanceof Stringtrue

第4节 逻辑运算符

1
2
&  - 逻辑与      |  - 逻辑或        ! - 逻辑非
&& - 短路与      || - 短路或        ^ - 逻辑异或
aba&ba|b!aa^ba&&ba||b
truetruetruetruefalsefalsetruetrue
truefalsefalsetruefalsetruefalsetrue
falsetruefalsetruetruetruefalsetrue
falsefalsefalsefalsetruefalsefalsefalse
1
2
3
4
5
6
7
8
9
逻辑运算符用于连接布尔型表达式 eg: 5< x >10(x大于5并且小于10)  在Java需要写成  x>5&x<10

"&" 和 "&&" 的区别 
"&"  :  左边无论真假,右边都进行运算
"&&" :  如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算

"|" 和 "||" 的区别 当左边为真,右边不参与运算
"|"  : 当左边为真,右边也参与运算
"||" : 当左边为真,右边不参与运算
  • 练习
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
int x = 1;
int y=1;
if(x++==2 & ++y==2){
	x =7;
}
System.out.println("x="+x+",y="+y);

------------------------------------------------------------------------------------

int x = 1,y = 1;

if(x++==2 && ++y==2){
	x =7;
}
System.out.println("x="+x+",y="+y);

------------------------------------------------------------------------------------

int x = 1,y = 1;

if(x++==1 | ++y==1){
	x =7;
}
System.out.println("x="+x+",y="+y);

------------------------------------------------------------------------------------

int x = 1,y = 1;

if(x++==1 || ++y==1){
	x =7;
}
System.out.println("x="+x+",y="+y);

第5节 位运算符

1
位运算是直接对二进制进行运算,先转换成二进制,然后在运算
运算符运算范例
<<左移3 << 2 = 12 – 3*2*2=12
>>右移3 >> 1 = 1 – 3/2=1
>>>无符号右移3 >>> 1 = 1 – 3/2=1
&与运算6 & 3 = 2
|或运算6 | 3 = 7
^异或运算6 ^ 3 = 5
~反码~6 = -7

第6节 三元运算符

1
2
3
4
5
6
7
8
格式: (条件表达式)?表达式1:表达式2

条件表达式: 如果为true 运算后的结果是表达式1;如果为false 运算后的结果是表达式2
表达式1和表达式2为同种类型

练习:
1. 获取两个数中的较大数
2. 获取三个数中的较大数

第7节 运算符优先级

 

第六章 键盘输入

1
Java提供了处理键盘输入的工具类Scanner,这个类在本地安装的JDK安装包下的jre文件夹中的lib文件夹中的rt.jar包中,所以要想使用此类必须保证本地安装JDK.

获取方式

1
2
3
4
5
//创建Scanner实例
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();//获取int类型数据
double d = scanner.nextDouble();//获取double类型数据
String s = scanner.next();//获取字符串类型数据

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

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

相关文章

数字信号处理音频FIR去噪滤波器(基于MATLAB GUI的开发)

1、内容简介利用MATLAB GUI设计平台&#xff0c;用窗函数法设计FIR数字滤波器&#xff0c;对所给出的含有噪声的声音信号进行数字滤波处理&#xff0c;得到降噪的声音信号&#xff0c;进行时域频域分析&#xff0c;同时分析不同窗函数的效果。将文件解压至一个目录下&#xff0…

第6章 ESP32-Kconfig配置

ESP32-Kconfig配置 1. 新建Kconfig.projbuild文件 2. 写入配置项 新建menu menu "点灯配置"endmenu运行 idf.py menuconfig&#xff0c;结果如下 powershel vscode 可以看到&#xff0c;power shell中文支持上有乱码&#xff0c;所以接下来选择英文 2. 配置menu…

开发实践:一份复杂业务系统的 RESTFul 接口规范

1. 从需求入手 对象&#xff1a;增删改查 对象列表&#xff1a;获取 对象的复杂处理&#xff1a;挖掘、整理、汇总 2. 资源分类 对象型&#xff1a;**/project/1 列表型&#xff1a;**/projects 算法型&#xff1a;**/project/search?input** 3. 设计 URI 3.1. URI 命名…

游戏盾如何防护

什么是游戏盾呢游戏盾是DDoS高防IP产品系列中针对游戏行业的安全解决方案。 游戏盾专为游戏行业定制&#xff0c;针对性解决游戏行业中复杂的DDoS攻击、游戏CC攻击等问题。目前以对抗的形式存在的高防产品形态&#xff0c;也就是防御带宽要大于攻击者的流量。如果你是做运营商商…

设计模式学习(六):Template Method模板方法模式

一、什么是Template Method模式 模板的原意是指带有镂空文字的薄薄的塑料板。只要用笔在模板的镂空处进行临摹&#xff0c;即使是手写也能写出整齐的文字&#xff0c;但是具体写出的文字是什么感觉则依赖于所用的笔。如果使用签字笔来临摹&#xff0c;则可以写出签字似的文字&a…

【ROS2入门】ROS 2 services 概述

大家好&#xff0c;我是虎哥&#xff0c;从今天开始&#xff0c;我将花一段时间&#xff0c;开始将自己从ROS1切换到ROS2&#xff0c;在上一篇中&#xff0c;我们一起了解ROS 2中Topic&#xff0c; 这一篇&#xff0c;我们主要会围绕ROS中另外一个重要的概念“Services ”&…

excel图表技巧:如何在折线图上标注极值

折线图是大家日常工作中经常使用的一类基础图表&#xff0c;作用是体现数据的变化趋势。例如将每月的销售额通过折线图展示出来&#xff0c;数值变化就会很直观&#xff1a;抛开图表的美化&#xff0c;基本上大家做出来的折线图都是上图中的样子&#xff0c;而老菜鸟做出来的折…

<Linux>进度条小程序和git使用详解

进度条小程序和git使用详解 文章目录进度条小程序和git使用详解一、Linux第一个小程序 - 进度条1.\r && \n2.行缓冲3.进度条二、git使用详解1.git概述1.1.历史背景1.2.版本控制1.3.集中式与分布式的区别2.Gitee仓库创建2.1.新建仓库2.2.复制仓库链接2.3.克隆仓库2.4.扩…

Redis基础命令操作四之集合类型HASH

HASH命令 命令举例说明HSETHSET [OUTKEY] [INKEY][INVALUE]集合添加键值对[INKEY][INVALUE]HGETHGET [OUTKEY] [INKEY]获取集合中inkey对应的valueHGETALLHGETALL [OUTKEY]获取集合中所有key,value信息HDELHDEL [OUTKEY] [INKEY]从集合中删除inkey键值对HLENHLEN [OUTKEY]获…

linux部署KubeSphere和k8s集群(二)

上一篇文章讲述了在单个节点上安装 KubeSphere和k8s&#xff0c;这节主要讲解k8s多节点集群部署 第一步&#xff1a;设置主机名称hostname--(3台机器都设置) hostnamectl set-hostname k8s-master hostnamectl set-hostname k8s-node1 hostnamectl set-hostname k8s-node2 第二…

_Linux多线程--生产者消费者模型篇

文章目录1. 为何要使用生产者消费者模型2. 基于BlockingQueue的生产者消费者模型3. C queue模拟阻塞队列的生产消费模型条件变量使用规范简单测试1. BlockQueue (缓存--超市)2. ConProd.cc3. 结果展示升级版测试&&设计与RAII风格的加锁方式1. BlockQueue.hpp2. Task.hp…

MATLAB 实现路由算法详细教程(完整代码+数据)

问题描述&#xff1a;鉴于我们小组成员都来自计通学院&#xff0c;我们对专业知识计算机网络内的路由器进行研究。我们知道在整个互联网中&#xff0c;有着很多个小的无法互相连通的小网络&#xff0c;早在上世纪六十年代&#xff0c;针对不同网络无法互联的问题&#xff0c;路…

IC芯片类元件创建

--摘自凡亿教育 一、VS1003音频芯片 首先&#xff0c;先创建新的元器件库 按箭头所指的即可。 然后&#xff0c;我们右击箭头所指的键&#xff0c;选择第六个矩形。 然后&#xff0c;依次放置管脚 点击箭头所指&#xff0c;既可放置管脚。 由于我们放置管脚的时候&#xff…

python的webdriver应用

本文总结如何使用python的webdriver插件&#xff0c;应用自动化测试以及爬虫抓取数据。工具选择谷歌版本下载&#xff1a;https://www.iplaysoft.com/tools/chrome/webdriver版本&#xff1a;http://npm.taobao.org/mirrors/chromedriver/ 或https://chromedriver.storage.goog…

顺序表学习指南,请查收~

作者&#xff1a;爱塔居的博客_CSDN博客-JavaSE,数据结构领域博主 专栏&#xff1a;数据结构 作者简介&#xff1a;大三学生&#xff0c;希望一起进步&#xff01; 文章目录 目录 文章目录 一、顺序表基本概念 二、练习 一、顺序表基本概念 &#x1f33a;顺序表是用一段物理地…

常用工具的常用操作

写在前面 记录可能用到的各种工具常见技巧。 1&#xff1a;sublime 1.1&#xff1a;操作多列 首先选中要操作的列所在的行&#xff1a; 然后点击selection&#xff0c;spit lines&#xff1a; 接下来移动左右键就可以操作了&#xff0c;删除或者批量添加内容&#xff1a; 1…

创客匠人助力机构招生获客转化

后疫情时代&#xff0c;各行各业部署线上化成为一门必修课。 创客匠人作为一家专注教育培训行业的知识付费技术服务商&#xff0c;为了更好的帮助教培机构、教育企业立足于内容传播需求&#xff0c;打通线上线下资源通道&#xff0c;将线下资源向"线上核心平台"靠拢…

无极低码:100套大屏可视化源码,包含多个行业

随着互联网的发展&#xff0c;各项技术的不断成熟&#xff0c;数据可视化在新的时代&#xff0c;人们对数据的呈现方式开始有了新的要求。科技感、美观、直观、动感等等都成为现代软件系统新的设计和思考方向&#xff0c;特别是硬件的发展和数据的发展&#xff0c;数据分析的需…

Vue3商店后台管理系统设计文稿篇(一)

记录使用vscode构建Vue3商店后台管理系统&#xff0c;这是第一篇&#xff0c;主要记录Vue3项目创建过程&#xff0c;以及数据的挂载 文章目录一、Vue3项目创建二、取消代码规范检查三、数据简单挂载正文内容&#xff1a; 一、Vue3项目创建 使用如下命令全局安装yarn npm i -g …

Java开发 - Mybatis框架初体验

前言 在前文中&#xff0c;我们已经学习了Spring框架&#xff0c;Spring MVC框架&#xff0c;相信大家对这些基础的内容已经熟练使用了&#xff0c;今天&#xff0c;我们继续来学习Mybatis框架。就目前而言&#xff0c;Mybatis框架依然是比较实用的框架&#xff0c;这篇博客&a…