定义:被Java语言赋予了特殊含义,用做专门用途的字符串(或单词)HelloWorld案例中,出现的关键字有 class、public 、 static 、 void 等,这些单词已经被Java定义好了。
特点:全部关键字都是小写字母。
关键字比较多,不需要死记硬背,学到哪里记到哪里即可。
说明:
Java中变量、方法、类等要素命名时使用的字符序列,称为标识符。
技巧:凡是自己可以起名字的地方都叫标识符。
标识符的命名规则(必须遵守的硬性规定):
练习:miles、Test、a++、 --a、4#R、$4、 #44、apps、class、public、int、x、y、radius
标识符的命名规范(建议遵守的软性要求,否则工作时容易被鄙视):
注意:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。
更多细节详见《代码整洁之道_关于标识符.txt》《阿里巴巴Java开发手册-1.7.1-黄山版》
一花一世界,如果把一个程序看做一个世界或一个社会的话,那么变量就是程序世界的花花草草、万事万物。即,变量是程序中不可或缺的组成单位,最基本的存储单元。
Java中变量的数据类型分为两大类:
注意:变量的数据类型可以是基本数据类型,也可以是引用数据类型。
变量赋值的语法格式:
举例1:可以使用合适类型的常量值给已经声明的变量赋值
举例2:可以使用其他变量或者表达式给变量赋值
变量可以反复赋值
内存结构如图:
Java各整数类型有固定的表数范围和字段长度,不受具体操作系统的影响,以保证Java程序的可移植性。
**字节(Byte):**是计算机用于计量存储容量的基本单位,一个字节等于8 bit。
**位(bit):**是数据存储的最小单位。二进制数系统中,每个0或1就是一个位,叫做bit(比特),其中8 bit 就称为一个字节(Byte)。
转换关系:
与整数类型类似,Java 浮点类型也有固定的表数范围和字段长度,不受具体操作系统的影响。
浮点型常量有两种表示形式:
float:单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求。
double:双精度,精度是float的两倍。通常采用此类型。
定义float类型的变量,赋值时需要以"f"或"F"作为后缀。
Java 的浮点型常量默认为``double``型。
测试用例:
案例1:定义圆周率并赋值为3.14,现有3个圆的半径分别为1.2、2.5、6,求它们的面积。
案例2:小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。 它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。
char 型数据用来表示通常意义上“字符”(占2字节)
Java中的所有字符都使用Unicode编码,故一个字符可以存储一个字母,一个汉字,或其他书面语的一个字符。
字符型变量的三种表现形式:
[TABLE]
char类型是可以进行运算的。因为它都对应有Unicode码,可以看做是一个数值。
boolean 类型用来判断逻辑条件,一般用于流程控制语句中:
boolean类型数据只有两个值:true、false,无其它
举例:
经验之谈:
Less is More!建议不要这样写:if ( isFlag = = true ),只有新手才如此。关键也很容易写错成if(isFlag = true),这样就变成赋值isFlag为true而不是判断!老鸟的写法是if (isFlag)或者if ( !isFlag)。
在Java程序中,不同的基本数据类型(只有7种,不包含boolean类型)变量的值经常需要进行相互转换。
转换的方式有两种:自动类型提升和强制类型转换。
规则:将取值范围小(或容量小)的类型自动提升为取值范围大(或容量大)的类型 。
基本数据类型的转换规则如图所示:
(1)当把存储范围小的值(常量值、变量的值、表达式计算的结果值)赋值给了存储范围大的变量时
(2)当存储范围小的数据类型与存储范围大的数据类型变量一起混合运算时,会按照其中最大的类型运算。
(3)当byte,short,char数据类型的变量进行算术运算时,按照int类型处理。
练习:
将3.14 赋值到int 类型变量会发生什么?产生编译失败,肯定无法赋值。
想要赋值成功,只有通过强制类型转换,将double 类型强制转换成int 类型才能赋值。
规则:将取值范围大(或容量大)的类型强制转换成取值范围小(或容量小)的类型。
自动类型提升是Java自动执行的,而强制类型转换是自动类型提升的逆运算,需要我们自己手动执行。
转换格式:
(1)当把存储范围大的值(常量值、变量的值、表达式计算的结果值)强制转换为存储范围小的变量时,可能会损失精度或溢出。
(2)当某个值想要提升数据类型时,也可以使用强制类型转换。这种情况的强制类型转换是没有风险的,通常省略。
练习:判断是否能通过编译
String不是基本数据类型,属于引用数据类型
使用一对""来表示一个字符串,内部可以包含0个、1个或多个字符。
1、任意八种基本数据类型的数据与String类型只能进行连接“+”运算,且结果一定也是String类型
2、String类型不能通过强制类型()转换,转为其他的类型
案例:公安局身份登记
要求填写自己的姓名、年龄、性别、体重、婚姻状况(已婚用true表示,单身用false表示)、联系方式等等。
练习:
练习1:
练习2:
计算机世界中只有二进制,所以计算机中存储和运算的所有数据都要转为二进制。包括数字、字符、图片、声音、视频等。
010101
世界上有10种人 ,认识和不认识二进制的。
十进制(decimal)
二进制(binary)
十进制
二进制
八进制
十六进制
10
11
100
101
110
111
1000
10
1001
11
10
1010
12
a或A
11
1011
13
b或B
12
1100
14
c或C
13
1101
15
d或D
14
1110
16
e或E
15
1111
17
f或F
16
10000
20
10
二进制,是计算技术中广泛采用的一种数制,由德国数理哲学大师莱布尼茨于1679年发明。
二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”。
二进制广泛应用于我们生活的方方面面。比如,广泛使用的摩尔斯电码(Morse Code),它由两种基本信号组成:短促的点信号“·”,读“滴”;保持一定时间的长信号“—”,读“嗒”。然后,组成了26个字母,从而拼写出相应的单词。
记忆技巧:
morsecode
我们偶尔会看到的:SOS,即为:
二进制如何表示整数?
计算机数据的存储使用二进制补码形式存储,并且最高位是符号位。
规 定
负数的原码:把十进制转为二进制,然后最高位设置为1
负数的反码:在原码的基础上,最高位不变,其余位取反(0变1,1变0)
负数的补码:反码+1
二进制转十进制:权相加法
针对于byte数据举例来说:
一个字节可以存储的整数范围是多少?
十进制转二进制:除``2``取余的逆
二进制转八进制
二进制转十六进制
八进制、十六进制转二进制
练习:
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
运算符的分类:
按照功能分为:算术运算符、赋值运算符、比较(或关系)运算符、逻辑运算符、位运算符、条件运算符、Lambda运算符
分类
运算符
算术运算符(7个)
+、-、*、/、%、++、–
赋值运算符(12个)
=、+=、-=、*=、/=、%=、>>=、<<=、>>>=、&=、|=、^=等
比较(或关系)运算符(6个)
>、>=、<、<=、==、!=
逻辑运算符(6个)
&、|、^、!、&&、||
位运算符(7个)
&、|、^、~、<<、>>、>>>
条件运算符(1个)
(条件表达式)?结果1:结果2
Lambda运算符(1个)
->(第18章时讲解)
按照操作数个数分为:
一元运算符(单目运算符)、二元运算符(双目运算符)、三元运算符 (三目运算符)
分类
运算符
一元运算符(单目运算符)
正号(+)、负号(-)、++、–、!、~
二元运算符(双目运算符)
除了一元和三元运算符剩下的都是二元运算符
三元运算符 (三目运算符)
(条件表达式)?结果1:结果2
举例1:加减乘除模
举例2:“+”号的两种用法
第一种:对于+两边都是数值的话,+就是加法的意思
第二种:对于+两边至少有一边是字符串的话,+就是拼接的意思
举例3:自加自减运算
理解:++ 运算,表示自增``1。同理,-- 运算,表示自减``1,用法与++ 一致。
1、单独使用
2、复合使用
案例1:
拓展:获取一个四位数的个位,十位,百位,千位
**案例2:**为抵抗洪水,战士连续作战89小时,编程计算共多少天零多少小时?
练习1:算术运算符:自加、自减
练习2:
练习3:
练习4:
练习5:(企业真题)写出下列程序的输出结果
符号:=
扩展赋值运算符: +=、 -=、*=、 /=、%=
[TABLE]
练习1:
练习2:
练习3:
练习4:
练习5:你有几种办法实现变量值减1?变量值减2呢?
举例:
思考:
逻辑运算符,操作的都是boolean类型的变量或常量,而且运算得结果也是boolean类型的值。
运算符说明:
逻辑运算符用于连接布尔型表达式,在Java中不可以写成 3 < x < 6,应该写成x > 3 & x < 6 。
区分“&”和“&&”:
区分“|”和“||”:
— 相同点:如果符号左边是false,则二者都执行符号右边的操作
— 不同点:| : 如果符号左边是true,则继续执行符号右边的操作
建议:开发中,推荐使用 ||
代码举例:
案例:
**练习1:**区分 & 和 &&
**练习2:**区分 | 和 ||
**练习3:**程序输出
位运算符的运算过程都是基于二进制的补码运算
(1)左移:<<
运算规则:在一定范围内,数据每向左移动一位,相当于原数据*2。(正数、负数都适用)
【注意】当左移的位数n超过该数据类型的总位数时,相当于左移(n-总位数)位
(2)右移:>>
运算规则:在一定范围内,数据每向右移动一位,相当于原数据/2。(正数、负数都适用)
【注意】如果不能整除,向下取整。
(3)无符号右移:>>>
运算规则:往右移动后,左边空出来的位直接补0。(正数、负数都适用)
(4)按位与:&
运算规则:对应位都是1才为1,否则为0。
(5)按位或:|
运算规则:对应位只要有1即为1,否则为0。
(6)按位异或:^
运算规则:对应位一个为1一个为0,才为1,否则为0。
(7)按位取反:~
运算规则:对应位为1,则结果为0;对应位为0,则结果为1。
举例1:
举例2:体会 m = k ^ n = (m ^ n) ^ n
**案例1:**高效的方式计算2 * 8的值(经典面试题)
**案例2:**如何交换两个int型变量的值?String呢?
条件运算符格式:
说明:条件表达式是boolean类型的结果,根据boolean的值选择表达式1或表达式2
如果运算后的结果赋给新的变量,要求表达式1和表达式2为同种或兼容的类型
**案例1:**获取两个数中的较大值
**案例2:**获取三个数中的最大值
**案例3:**今天是周2,10天以后是周几?
要求:控制台输出"今天是周2,10天以后是周x"。
凡是可以使用条件运算符的地方,都可以改写为if-else结构。反之,不成立。
开发中,如果既可以使用条件运算符,又可以使用if-else,推荐使用条件运算符。因为执行效率稍高。
运算符有不同的优先级,所谓优先级就是在表达式运算中的运算符顺序。
上一行中的运算符总是优先于下一行的。
优先级
运算符说明
Java运算符
括号
()、[]、{}
正负号
+、-
单元运算符
++、--、~、!
乘法、除法、求余
*、/、%
加法、减法
+、-
移位运算符
<<、>>、>>>
关系运算符
<、<=、>=、>、instanceof
等价运算符
==、!=
按位与
&
10
按位异或
11
按位或
12
条件与
&&
13
条件或
14
三元运算符
? :
15
赋值运算符
=、+=、-=、*=、/=、%=
16
位赋值运算符
&=、`
开发建议:
编码与解码:
计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码 。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码 。
**字符编码(Character Encoding):**就是一套自然语言的字符与二进制数之间的对应规则。
**字符集:**也叫编码表。是一个系统支持的所有字符的集合,包括各国家文字、标点符号、图形符号、数字等。
ASCII码(American Standard Code for Information Interchange,美国信息交换标准代码):上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码。
ASCII码用于显示现代英语,主要包括控制字符(回车键、退格、换行键等)和可显示字符(英文大小写字符、阿拉伯数字和西文符号)。
基本的ASCII字符集,使用7位(bits)表示一个字符(最前面的1位统一规定为0),共128``个字符。比如:空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。
缺点:不能表示所有字符。
拉丁码表,别名Latin-1,用于显示欧洲使用的语言,包括荷兰语、德语、意大利语、葡萄牙语等
ISO-8859-1使用单字节编码,兼容ASCII编码。
GB就是国标的意思,是为了显示中文而设计的一套字符集。
GB2312:简体中文码表。一个小于127的字符的意义与原来相同,即向下兼容ASCII码。但两个大于127的字符连在一起时,就表示一个汉字,这样大约可以组合了包含7000``多个简体汉字,此外数学符号、罗马希腊的字母、日文的假名们都编进去了,这就是常说的"全角"字符,而原来在127号以下的那些符号就叫"半角"字符了。
GBK:最常用的中文码表。是在GB2312标准基础上的扩展规范,使用了双字节编码方案,共收录了21003``个汉字,完全兼容GB2312标准,同时支持繁体汉字以及日韩汉字等。
GB18030:最新的中文码表。收录汉字70244``个,采用多字节编码,每个字可以由1个、2个或4个字节组成。支持中国国内少数民族的文字,同时支持繁体汉字以及日韩汉字等。
Unicode编码为表达任意语言的任意字符而设计,也称为统一码、标准万国码。Unicode 将世界上所有的文字用2``个字节统一进行编码,为每个字符设定唯一的二进制编码,以满足跨语言、跨平台进行文本处理的要求。
Unicode 的缺点:这里有三个问题:
Unicode在很长一段时间内无法推广,直到互联网的出现,为解决Unicode如何在网络上传输的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现。具体来说,有三种编码方案,UTF-8、UTF-16和UTF-32。
Unicode是字符集,UTF-8、UTF-16、UTF-32是三种将数字转换到程序数据的编码方案。顾名思义,UTF-8就是每次8个位传输数据,而UTF-16就是每次16个位。其中,UTF-8 是在互联网上使用最广的一种 Unicode 的实现方式。
互联网工程工作小组(IETF)要求所有互联网协议都必须支持UTF-8编码。所以,我们开发Web应用,也要使用UTF-8编码。UTF-8 是一种变长的编码方式。它可以使用 1-4 个字节表示一个符号它使用一至四个字节为每个字符编码,编码规则:
举例:
Unicode符号范围 | UTF-8编码方式
注意:在中文操作系统上,ANSI(美国国家标准学会、AMERICAN NATIONAL STANDARDS INSTITUTE: ANSI)编码即为GBK;在英文操作系统上,ANSI编码即为ISO-8859-1。
上篇文章介绍了三种普遍的运算符,这篇文章我么继续介绍剩下三种运算符。第一:赋值运算符:通常数学语言中的“=”被用于表示左右两值相等,但在计算机领域,“=”的用法为:数据类型+数据名+“=”+数字。但赋值顺序为从右往左,也就是等号左边的变量名等于等号右边的值。赋值运算符往深了探究有以下五种:“+=”,“-=”,“%=”,“/=”,“*=”“a+=b“代表了a=a+b,其他也同理,计算顺序从右往左。i
PHP算术运算符PHP提供了多种算术运算符,可用于执行基本的数学运算,包括加、减、乘、除,以及求余和幂运算。以下是一些常见的PHP算术运算符及其示例:1. 加法运算符(+)$sum = 5 + 3; // 结果为:8 echo $sum;2. 减法运算符(-)$difference = 10 - 7; // 结果为:3 echo $difference;3. 乘法运算符(*)$product
变量为啥用变量?因为繁琐操作使用变量变量名应该有意义规范不能用保留字区分大小写没有类型限制,动态的
一直想写一篇介绍设计模式的文章,让读者可以很快看完,而且一看就懂,看懂就会用,同时不会将各个模式搞混。自认为本文还是写得不错的????????????,花了不少心思来写这文章和做图,力求让读者真的能看着简单同时有所收获。
python对象的相关概念1、python程序中保存的所有数据都是围绕对象这个概念展开的:程序中存储的所有数据都是对象每个对象都有一个身份、一个类型和一个值对象的类型也称对象的类别,用于描述对象的内部表示及它支持的方法和操作创建特定类型的对象时,有时也将该对象称为该类型的实例实例被创建后,其身份和类型就不可改变如果对象的值是可修改的,则称为可变对象如果对象的值不可修改,则称为不可变对象如果某个对象
关注公众号“Java后端技术全栈”回复“000”获取程序员必备电子书前言 大家好,我是老田,今天给大家分享java基础知识之String。String类的重要性就不必说了,可以说是我们后端...
一、python变量特点 python是弱类型语言,无需声明变量可以直接使用并且变量的数据类型可以动态改变 二、变量命名规则 1.不能使用python关键字 2.不能数字开头 3.不能包含空格 4.不能包含# 5.不建议使用内置函数作为变量名 **语句块的缩进 条件或者循环组成的语句块中,块中的每一
1、算数运算符 + :加法 (++自加) - :减法 (--自减) * :乘法 / :除法 % :取余运算2、关系运算符 < :只能比较基本类型数据之间的关系,不能比较对象之间的关系。 > : (同关系运算符“<”) <=: (同关系运算符“&l
这篇文章是Linux的超级基础且经常用到的内容,不多说,直接肝!可以直接拉到文末点个赞!Linux软件安装Linux排查问题套路Linux命令详解一 Linux通用知识说到操作系统,如果读大学的时候是计算机专业,那肯定就会上这门课,我猜测当时的你们想法是这样的上大学使用的都是Windows系统,界面友好,上手快,习惯性的点点点操作大部分的课程在windows中操作,比如
xocal,None,or,pass,return,raise,try,True,while,with,yeild下面的列表显示了在Python中的保留字。这些保留字不能用作常数或变数,或任何其他
Java变量一、变量的概念1.定义 内存中的一个存储区域 该区域的数据可以在同一类型范围内不断变化 变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值int age=10;2.变量的类型:java 强类型的语言,python 弱类型的语言。3.变量的作用: 用于在内存中保存数据4.使用变量注意:Java中每个变量必须先声明,后使用 使用变量名来访问这块区域的数据 变量的作用域:其定义所在
今天,“我”不自量力的面试了某大厂的 Java 开发岗位,迎面走来一位风尘仆仆的中年男子,手...
变量:在程序运行的时候,可以改变的量1、变量起名:变量起名最好遵守小驼峰原则(开头字母小写,之后的字母开头大写)变量起名一定会用到标识符,标识符就是用来表示这个变量的。(标识符的组成:大小写的字母、$、_、数字)2、注意:①在使用变量之前,一定要对变量进行初始化,在C/C++中未对变量进行赋值,通常会由编译器进行赋初值。但是在java中的变量如果没有经过赋值操作,那么在进行编译的时候编译器会报错,
系统学习一遍JS。 1.说明 声明变量使用var 字符串使用双引号或者单引号 数字直接使用数字 2.变量声明 var number; var x,y,z; 3.变量的初始化 var flag=true; var nll=null; var obj=new Object(); 4.变量名定义 一般以字
变量 类变量 实例变量 局部变量 常量(特殊变量) public class test{ //添加static 为类变量 static int a = 0; //不添加为实例变量 String b = "hello"; // 添加final为常量,static与final不分顺序 final sta ...
JAVA基础语法运算符包机制、JavaDoc运算符Java语言支持如下运算符:优先级:最好使用()算术运算符:+,-,*,/,%(余),++(自增),–(自减);赋值运算符:=;关系运算符:> , < , >= , <= , == , != , instanceof;计算结果一定是true or false;以后会和if一起用逻辑运算符:&& (与), ||
运算符相比其他编程语言,Python 中的运算符更为丰富,准功能更为强大。Python 中的运算符可分为算术运算符、比较运算符、赋值运算符、逻辑运算符等。本节将对这些运算符的使用进行讲解。1 算术运算符Python中的算术运算符包括+、-、*、/、//、%和**,这些运算符都是双目运算符,每个运算符可以与两个操作数组成一个表达式。 以操作数a=3,b=5为例,Python 中各个算术运算符的功能与
Java运算符1、算数运算符 (1)、基本四则运算:+、-、、/、% 规则比较简单,值得注意的是0不能作为除数 会出现异常 异常:1、运行时期的异常(非受查异常) 2、编译时期的异常(受查异常)(在javac步骤就会被检测出来) 0作为除数会出现,运行时期非受查异常。 %操作再Java中也能针对double来计算。 (2)、增量赋值运算符:+=、-=、=、/=、%= (3)自增/自减运算符:++、
参考数据:K12数据集 引言与背景 K12题库数据集是一个面向基础教育阶段的综合性题库资源,涵盖了小学、初中、高中三个学段的主要学科,共计包含4599道高质量的题目。该数据集对于教育技术研究、智能教学系统开发、自然语言处理模型训练以及教育数据分析具有重要的应用价值。 数据集包含了完整的题目元数据、原 ...
题目内容:UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。如1124表示11点24分,而905表示9点5分,36表示0点36分,7表示0点7分。有效的输入范围是0到2359,即你的程序
文章摘要:本文讲解LeetCode第238题"除自身以外数组的乘积"的解法。要求在不使用除法且O(n)时间复杂度下,计算数组中每个元素除自身外所有元素的乘积。核心思路是利用前缀积和后缀积相乘,通过两次遍历数组分别计算前缀积和后缀积,最后将结果相乘得到最终答案。代码示例展示了该算法的实现过程,先从左到右计算前缀积,再从右到左计算后缀积并同时更新结果。
在分析科学的漫长链条中,样品前处理始终是决定最终结果准确性与可靠性的关键环节,也是制约实验室效率的“瓶颈”。传统湿法消解方法耗时冗长、试剂消耗大、人为误差风险高,且易造成挥发性元素损失。如今,以微波消解工艺为核心的现代化消解仪,改变这一传统流程,将实验室带入了高效、安全、环保的新时代。一、 效率的提 ...
本文探讨了数字化时代下软件供应链从传统商业软件向云原生微服务架构的转型,重点分析了微服务与AI技术的协同优势。文章以亚马逊为案例,展示了微服务架构如何通过领域驱动设计(DDD)和分布式特性为AI落地提供技术支撑,包括特征工程隔离、实时数据更新和模型迭代加速。同时提出了开发人员需具备微服务设计能力和AI工具驾驭能力的双重转型要求,以及组织架构向"小团队自治"模式的调整。最后介绍了绞杀者模式作为遗留系统向智能微服务架构迁移的渐进式路径,强调通过业务-数据-模型闭环构建技术竞争力。