1注释、关键字、标识符
注释
给程序函数做注释方便理解,不影响程序运行
单行注释//
多行注释/*内容*/
文档注释/**文档*/ (生成文档使用,先不讲)
注释写中文前,先设置notepad++为ANSI编码,防止乱码
我们可以看见多行注释和单行注释的效果,颜色都变成绿色,看注释是否为多行或者单行来区别使用
关键字
关键字是java程序预设好有特殊意义的单词,如public,class,static,void,在图1notepad++里显示紫色,我们设置变量或者类名不能与其重复
关键字很多,学到哪里记到哪里
标识符
类名,变量名都可以成为标识符
类名和变量名可以由A-Z,a-z,0-9以及美元$、下划线组成,其中数字不可以开头,命名不能与关键字重复
一般类名首字母大写(几个单词拼接的,几个单词首字母大写)
方法名首字母小写,后面的单词首字母大写
这种命名法为驼峰命名,为了方面快速理解功能
2 数据(常量和变量)
数据是计算机程序拿来处理或者依据处理的对象,分为2类:
基本数据类型:整数,小数,字符,布尔
引用数据类型:数组,类,接口
常量
针对于变量,不变的数据称为常量
整数,又分为十进制,二进制,十六进制,八进制等等
小数,又称为浮点数
布尔,true,false,就2种
字符,单引号''包括起来,而且只能包括一个字符,可以是数字,字符(可以为汉字)
字符串,双引号""包裹起来,可以包括0到n个字符(包括数字汉字)
我们尝试写Demo1来输出常量
我们可以看到下图的结果,其中二进制和16进制都被转换成了10进制打印
我们输出字符串常量和bool
变量
相对于常量,会变化的数据称为变量,程序运行时,变量存储于内存中
内存简介
内存非永久存储,断电清空(相对于硬盘等永久存储设备),一个数据最小的数据为1个B=8bit,虽然可能布尔型0,1只用1个bit好像就能表示,但是也是用一个B来表示
变量基本类型(4类8种)
我们内存设定变量类型和大小觉得占据空间,具体如下图
整形:4种byte,short,int,long 分别占据1,2,4,8字节(上图中的表示范围为有符号情况)
浮点型:float,double分别占4,8字节(double精度高)
字符型:char 2字节
布尔:boolean 1字节
整形和浮点型选用哪种子类型根据实际使用范围,如果不特殊考虑范围,一般使用int,double
类型说明
100是常量,而且在byte范围内,但是我们认为其为int类型,除非我们提前指定了byte类型,
整数在java里没有指定类型,则默认为int,如果我们写一个大于int存储长度的数值则会报错提示溢出
如果我们指定数据类型为long,则需要加上L,如100L,231121312341L
浮点型java没特殊指定默认是double(可以结尾加D),如果需要指定float,需要结尾加上F,如3.14F,-1.234F
变量创建
变量三要素,类型,变量名,数值
如我们定义int类型,会给内存开辟4字节空间,但是我们需要知道存在哪里,通过变量名指定位置,数值是这个区域存储的数值,变量名还必须符合我们之前说的命名规则
这个demo尝试写定义几个变量,并去显示,这里注意long,float结尾需要加上L,F如果没写,大数long会报错,因为int只能表示到214746847,超过提示溢出,F没有写,会提示损失精度,因为默认是按double类型的小数
字符串变量
字符串变量是引用类型变量,不是之前讲的基本变量类型,我们定义字符串变量如下,String s = "xxx";注意是双引号结尾,还有我们需要习惯结束位置有双引号
变量定义的注意事项
1变量定义不赋值不能使用,否则会编译报错提示未初始化
我们可以先定义,用前初始化,但是建议最好开始定义赋值一起
2变量有作用域限制
作用范围在其定义的大括号内,且在定义之后
如上图的j定义只在{}包裹的区域内,但是下面尝试打印会报错,找不到符号
3变量重复定义
如下图我们定义了2次i,报错提示重复定义
变量类型转换
数据类型范围小的可以直接转为范围大的。
允许转换byte->short->int->long->float->double
类型自动转换
数据范围小的自动转换为范围大的
如上图,我们d赋值,右侧为int,左侧为范围大的double,赋值进行自动转换,我们打印可以看见结果是1000.0
强制类型转换
数据范围大的变成数据范围小的,需要手动指定转换,否则报错
这里有个公式实现转换
转换后类型 变量名 = (转换后类型) 被转换数据;
如上图,代码实现浮点型转换成整形(砍掉小数部分)
又如上图,我们给200强转给b,此时打印b结果是-56,不是200,这其实是数据溢出了,200-128=72
72的2进制1001000,首位1表示赋值,补码0110111+1=56
总结:强制转换没有具体需求不要做,容易丢失数据
3 运算符
算术运算符
+加法,连接符(遇到字字符串),正号(一般不写)
-减法,负号
*乘/除
%取模(得余数)
++自增,--自减,放在左右有区别,放在右,则是执行当前式子,再自增减,放在左则是先增减,在执行,符合从左到右的顺序
我们尝试打印加减乘除区域和拼接效果,其中除法因为2者都是整数所以默认得到的结果还是整数
拼接"123"遇到6就将结果拼接成字符串,后面同理,
5+5+"123"+5="101235",这里5+5因为都是整数可以加,遇到字符串再拼接
所以常用数字转字符串+"" (用空字符串拼接)
赋值运算符
=和+=,-=,*=,/=,%=几个,和python一样,且需要注意的是不能符号分开!!
这里需要注意的是,如果我们如上图操作,而不是使用a+=1,会报错,这是因为a为1字节,a+1会变成4字节
而我们使用a+=1不会报错,和使用强制转换一样效果,其实这是文档告诉我们的,默认就进行了强制转换
比较运算符
如图,运算式结果返回bool值
逻辑运算符
与或非& && | || ! 异或^,其中2个&&,||为短路与或,即有分别与逻辑遇到false和或逻辑遇到true就不再往下进行计算
demo如上
三元运算符
布尔表达式?结果1:结果2(满足返回结果1,否则结果2)