Java语法手册 一
Java语法手册 一
开篇
Java 程序注释
// 单行注释/* 多行注释 *//** DOC注释:文档注释(Java特有的文档注释,可以通过JDK Javadoc命令生成一个HTML网页给用户观看 */- Java 注释的内容,代码编译时候就不会考虑… 但会影响文件大小!
**使用编辑工具时候,可以根据颜色来观察, 是否注释生效!**
Java 程序的结构
1.编写程序框架:pulicclass类名{//类名要和 程序文件名 相同 class声明类程序框架;//public class 修饰的类名 必须与.java 的文件名相同不然会报错找不到Class}/* 注意: 一个.Java 源文件内可以声明多个 class类,但只可以有一个声明为 public 的,声明public 的类的类名必须和源文件相同! javac 编译时: 会生成一个 或 多个 .class字节码文件,源文件中有几个class类就编译出几个 .class文件!文件名就是类名~) 每一个类, JVM 编译时候都会产生一个 .class 字节码文件!*/2.mian()方法程序入口publicstaticvoidmain(String[]args){//main 程序入口开始地方; 它有固定的书写格式;}3.打印语句:System.out.println("打印内容");//去掉 ln print(""); 表示打印 不换行内容;总结:pulicclass类名{publicstaticvoidmain(String[]args){System.out.println("hello world");}}/* Java源文件以“java”为扩展名,源文件的基本组成部分是类(class) Java应用程序的执行入口是main()方法。它有固定的书写格式: public static void main(String[] args) {...} Java语言严格区分大小写。 Java方法由一条条语句构成,每个语句以“;”结束。 大括号都是成对出现的,缺一不可。 一个源文件中最多只能有一个public类。其它类的个数不限,如果源文件包含 一个public类,则文件名必须按该类名命名。 */变量与运算符
关键字和保留字
关键字
- 定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
程序开发说实话单词并不多,但该背还是得背的! - 特点:
被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
用于定义数据类型的关键字classinterfaceenumbyteshortintlongfloatdoublecharbooleanvoid用于定义流程控制的关键字ifelseswitchcasedefaultwhiledoforbreakcontinuereturn用于定义访问权限修饰符的关键字privateprotectedpublicdefault//默认不声明即可用于定义类,函数,变量修饰符的关键字abstractfinalstaticsynchronized用于定义类与类之间关系的关键字extendsimplements用于定义建立实例及引用实例,判断实例的关键字newthissuperinstanceof用于异常处理的关键字trycatchfinallythrowthrows用于包的关键字packageimport其他修饰符关键字nativestrictfptransientvolatileassert用于定义数据类型值的字面值truefalsenull保留字(reserved word)
- 现有Java版本尚未使用,但以后版本可能会作为关键字使用。
自己命名标识符时要避免使用这些保留字
gotoconst变量
变量:
- 源于数学,是计算机语言中存储计算结果 或 值的抽象概念
变量是存储数据的基本单元,不同变量相互独立
**变量的声明:**1.变量类型:不同变量类型存储不同的资源,egintdoubleString...//不同编程语言的类型写法也有不同2.变量名:变量是一个存储数据的基本单元,程序为了方便访问,给每个变量起名 称为 变量名,(so 变量名不可以相同)3.变量值:变量存储的实际资源信息**赋值运算符=**1.声明变量的类型2.并给它命名3.将相应的数据放进变量中去" = "等号 赋值;//Java是一种强语言,声明变量必须指定其类型: 类型 变量名 = 值;//对于JS(JavaScript)弱语言可以不用指定变量类型: var 变量名 = 值;赋值:使用 等号"=",给这个变量赋值这个变量代表这个值...扩:可以连续赋值inti=1,q=2;//同时赋值多个~ int i,q; i=q=2; //同时符多个对象值;注意:1.方法中使用了未赋值的变量运行过程中会报错(程序逐行执行,变量为声明内存中并没有存在,无法找到,编译都不通过!)//成员变量在声明时系统会赋默认值...2.变量名不能重复3.等号赋值变量名命名规则(可以中文^^,但别用!可以装逼~,后面你会知道中午乱码是有多头疼):
规则必须遵守,救像法律一样!(不然语法爆错)而规则不一定要遵守但是优秀程序员的标配!
1.变量名只能字母,下划线" _ "$ 符号开头2.可以包括数字但不能开头3.除了下划线"_"$ 不可以包含其他字符4.不能使用Java语言的关键字/保留字 eg:intString...建议:尽量使用有意义的变量名, 不然 a,b,c...没有意义 长时间会不容易辨别 使用!!(见名知议!)注意:Java采用unicode字符集,因此标识符可以使用汉字声明,但不建议使用!(在公司规矩得被骂死!)Java命名规范
- 在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。
- Java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用
项目名: 首字母大写,多个单词组成其他单词首字母大写;包名: 多单词组成时所有字母都小写:xxxyyyzzz 类名、接口名: 多单词组成时,所有单词的首字母大写:XxxYyyZzz大驼峰命名法)类名、接口名: 多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz 小驼峰命名法)常量名: 所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZJava八大基础的数据类型:
数据类型:
基本数据类型之间可以进行程序算术运算~~
Boolean(1字节)boolean类型: 布尔类型,只有两种结果,用于表示程序(真true 假false) 整数类型(1字节)byte 取值: 范围 -128~127;//byte b=126;(2字节)short //short s=123;(4字节)int 整型: 表示整数1.2.3... //int i=1;(8字节)Long 长整型和int 一样存储 长度比 int 更大! //long long=12313241L;为防止整数过大加L(可以不加自动类型转换,但数值过大不加L 会报错!)浮点数类型(4字节)float 单精度浮点数: 尾数可以精确到7位有小数 //float f=12.3f;必须要有小数点,值范围比 long都大!(必须要加f double类型比它大!!)(8字节)double 双精度浮点数: 带小数的数字1.22... //double d=1.0;要有小数数,且是 float的两倍;字符型:(2字节)char 字符型:单子符'男','A'一个值(必须: 有且必须有一个字符,不能不放!)//char c='单';单子符(占用内存2字节=1字符)//单子符 A,B 是两个字符, char 表示单字符,char 的单字符都可以使用(int)强转成一个整型的 数值~(ASCll码👇);char a='a';System.out.print((int)a);// 输出97;a字符的 ASCll码, so 也可以这样写 int i='a';i=97;但不建议哦!char a=97;Sysyem.out.print(a);// 输出 a;因为97没有被''单引号包起来,是以一种ASCll码进行赋值;表示a;//转义字符除外, char c='\n';表示一个换行符,赋值给 c;//使用 Unicode 表示字符型 变量;char c6='\u...';//\u后面+ 特定的 Unicode编码表示字符,没匹配编码则回返回一个问号?!;注意: char运算使用时会进行Ascll码转换! char a='a';Sysyem.out.print(a+1);得:98String 引用类型:
Java 引用数据类型 String String 字符串型: 表示一串字符 如: 员工名... String s="wsm 最帅";String 与其它8种基本数据类型拼接返回都是String类型;注意: 对象是程序中,的一种存储单位, 所以不同的类型对象,在程序内存中也占用,不同的空间;程序运算符:
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
算术运算符
赋值运算符
比较运算符(关系运算符)
逻辑运算符
位运算符
三元运算符
算术运算符
Java 中算术运算符:Java中用于计算的 预算符;+ 加 求操作数的和 - 减 求操作数的差 * 乘 求操作数的乘积 / 整除 除法操作 求操作数的 尚5/2 和5÷2 一样结果 是2商 % 除于 除于 两个数相除 于的数5%2 结果1;++ 加加 指变量 在原有基础上 自行 +1 -- 减减 指变量 在原有基础上 自行-1//注意 ++ -- 在前在后 ++i 和 i++ 有时用法还不一样:!!代码运行时,++在前先加1在执行程序,++在后先执行程序在+1(-- 同理) 扩:+=-=*=/=%=:就是一种简介方法~(推荐)算术运算符的注意问题: 如果对负数取模,可以把模数负号忽略不记如:5%-2=1但被模数是 负数则不可忽略.此外,取模运算的结果不一定总是整数 对于除号“/”,它的整数除和小数除是有区别的 整数之间做除法时,只 保留整数部分而舍弃小数部分 例如:int x=3510;x=x/1000*1000;x的结果是:3000“+”除字符串相加功能外,还能把非字符串转换成字符串 例如: System.out.println(“5+5=”+5+5);//打印结果是?5+5=55? 程序: 从上往下,左往右执行,"5+5="字符串 +5数值,默认转换成:"5+5=5"字符串在与数值5相加!赋值运算符
符号:=当=两侧数据类型不一致时,可以使用自动类型转换或使用强制 类型转换原则进行处理。`支持连续赋值`扩展赋值运算符:+=, -=, *=, /=, %=比较运算符(关系运算符)
比较运算符的结果都是boolean型,也就是要么是true,要么是false比较运算符“==”不能误写成“=”
关系运算符: //JAVA 用于比较大小,长短,多少...运算符 关系运算符 (结果boolean类型)>:大于 用于比较大小 结果 false/true<:小于 用于比较大小 结果 false/true>=:大于等于....<=:小于等于....==:等于....//:==与=一个赋值 一个用于判断==: 左边的值与右边的值比较 是否一致;=: 右边的值赋给左边;!=:不等于..instanceof 检查是否是类的对象"Hello"instanceof Stringtrue逻辑运算符
短路用法:&&与: 程序判断,(true&&true)两边都为true则返回true,一个不成立则返回false||或: 程序判断,(true||true)两边只要有一个true则返回true,都不成立则返回false 非短路用法:&与:同上|或:同上 但,&&&和|||有区别: 单&时,左边无论真假,右边都进行运算;双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算 “|”和“||”的区别同理||表示:当左边为真,右边不参与运算!对结果值取反~ ^ 比较两边结果一样则false,不一样则true位运算符
了解知道即可,不常用,看底层时候也许会看见!
Java 位运算符:适用于数值类型运算<<左移3<<2:3左移两位 结果就是3*2*2=12;左移几位就是 *几次2;注意数值移动太多数值会出问题;(二级制~ 最后会出现负数)左移在一定范围内 相当于*2>>右移3>>1:3右移一位 结果就是3/2=1;右移几位就是 /几次2;注意数值移动太多数值会出问题;右移在一定范围内 相对于/2 //左右移,程序的底层都是 二级制,0101010... 左移就是数值的 二进制码向左移动两位缺的用0补齐 ,右移就是 二进制的数象右移两位。缺的就以最高位补全表示;>>>无符号右移3>>>1:3无符号右移一位等于3/2=1;(后面讲解)二进制码 最高位无论是0或1 都一0表示,成为一个正数;&与运算符 二进制码0:true1:false 将两个二级制码逐个位 码进行比较,返回成一个新的二级制码;就是它的结果;|或运算符 二进制码0:true1:false 将两个二级制码逐个位 码进行比较,返回成一个新的二级制码;就是它的结果;^ 异预算符 二进制码0:true1:false 将两个二级制码逐个位 码进行比较,返回成一个新的二级制码;就是它的结果;~ 取反运算 取其 数值 二进制码的 反过来的 二级制码,表示的数;(图:取反位运算)注意:(图:与或异位运算符)&|^ 是逻辑运算符还是位预算符,取决于,它操作数据的类型,返回 boolean就是逻辑,数值类型就是位运算符;😎
小知识
计算机存储单元:
字符编码 ASCLL码
在计算机内部,所有数据都使用二进制表示。
- 每一个二进制位(bit位)有 0 和 1 两种状态,因此
1字节等于8bit8 个二进制位就可以组合出 256 种状态;2∧8- 一个字节一共可以用来表示 256 种不同的状态,每一个状态对应一个符号,就是 256 个符号
从0000000 到 11111111为了方便程序员与计算机更有效的沟通:
- 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,
做了统一规定。这被称为ASCII码- ASCII码一共规定了128个字符的编码,比如:
空格“SPACE”是32(二进制00100000)大写的字母A是65(二进制01000001)- 这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位
最前面的1位统一规定为0缺点:
- ASCLL码大大提高了,程序与计算机的交互,但,不同国家有不同的语言…
- 相同的编码表示的字符不一样:比如130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel
- 因此出现了乱码的概念~
Unicode 编码
乱码:
- 乱码:世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。
- 因 此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读, 就会出现乱码。
Unicode:一种编码,将世界上所有的符号都纳入其中。
- 每一个符号都给予一个独一 无二的编码,使用 Unicode 没有乱码的问题。
Unicode 的缺点:
- Unicode 只规定了符号的二进制代码,却没有规定这个二进制代码 应该如何存储;
三个字节表示一个字符...- 计算机无法区别 Unicode 和 ASCII:计算机无法区分三个字节表示一个符号 还是分别表示三个符号。
- 另外,我们知道,英文字母只用一个字节表示就够了,
如果 unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有 二到三个字节是0,这对于存储空间来说是极大的浪费。
UTF-8
UTF-8 是在互联网上使用最广的一种 Unicode 的实现方式。
UTF-8 是一种变长的编码方式。它可以使用 1-6 个字节表示一个符号,根据不同的符号而变化字节长度
UTF-8的编码规则:
- 对于单字节的UTF-8编码,该字节的最高位
第一位为0,其余7位用来对字符进行编码(等同于 ASCII码)- 对于多字节的UTF-8编码,如果编码包含 n 个字节
那么第一个字节的前 n 位为1第一个字节的第 n+1 位为0该字节的剩余各位用来对字符进行编码。
在第一个字节之后的 所有的字节,都是最高两位为"10",其余6位用来对字符进行编码。- 假设一个三字节编码:
1字节是8位:00000000 00000000 00000000
第一个字节的前 n 位为1:00100000 00000000 00000000
第一个字节的第 n+1 位为0:00100000 00000000 00000000
在第一个字节之后的 所有的字节,都是最高两位为"10":00100000 10000000 10000000其余6位用来对字符进行编码- 这样当面对一连串的字节,计算机可以区分这个字符是
几个字节组成!动态的增减字节节省空间
当遇到 第一位是0,就当一个字节处理,但下一个字节第一位是 1
这根据这个字节第一个 10,判断出该字节的个数!!👍节省空间!
总结:
属于字符集的一种,最初为了方便与计算机通信,定义的一个规范字符语言!
是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言…
ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符
信息在计算机上是用二进制表示的,这种表示法让人理解就很困难。
为保证人类和设备,设备和计算机之间能进行正确的信息交换,人们编制的统一的信息交换代码,这就是ASCII码表
它最初是美国国家标准,供不同计算机在相互通信时用作共同遵守的西文字符编码标准,后被ISO及CCITT等国际组织采用。
每个数值: 表示一个字母 或 特殊符号!
发展:
- ASCLL是针对与美国英语的一种计算机字符集,不同国家为了方便与计算机通信出现了很多种字符集!..
但,虽然与计算机之间完成通信了,但是不同国家之间不同字符集有产生了不同的影响!为了统一出现了 Unicode —后来又衍生出了— UTF-8!
(中文字节的字符集 GBK)