一、Java基础语法
1.注释、标识符、关键词
1.1注释
让书写注释成为一个非常好的习惯
单行注释 hello world //这是一个问好
多行注释 /* 我
你
他 */
文档注释 /**
*@Author 林
*/
1.2标识符
Java 中所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
*一个合法的标识符只能由“数字、字母、下划线_、美元符号$”组成,不能含有其他的符号。
*不能以数字开头
*严格区分大小写
*关键字不能做标识符
*理论上无长度限制,但是最好不要太长
遵循驼峰规则
例如:SystemService UserService CustomerService
1.3关键词
| abstract | 表明类或者成员方法具有抽象属性 |
| assert | 断言,用来进行程序调试 |
| boolean | 基本数据类型之一,声明布尔类型的关键字,占1位只有true和false |
| break | 提前跳出一个块 |
| byte | 基本数据类型之一,字节类型,占1个字节符,-127~128 |
| case | 用在switch语句之中,表示其中的一个分支 catch 用在异常处理中,用来捕捉异常 |
| char | 基本数据类型之一,字符类型,占2个字节符 |
| class | 声明一个类 |
| const | 保留关键字,没有具体含义 |
| continue | 回到一个块的开始处 |
| default | 默认,例如,用在switch语句中,表明一个默认的分支。 Java8 中也作用于声明接口函数的默认实现 |
| do | 用在do-while循环结构中 |
| double | 基本数据类型之一,双精度浮点数类型,占8个字节符 |
| else | 用在条件语句中,表明当条件不成立时的分支 |
| enum | 枚举 |
| extends | 继承,表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类; 对于接口,可以是另一个接口 |
| final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖, 或者成员域的值不能被改变,用来定义常量 |
| finally | 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 |
| float | 基本数据类型之一,单精度浮点数类型,占4个字节符 |
| for | 一种循环结构的引导词 |
| goto | 保留关键字,没有具体含义 |
| if | 条件语句的引导词 |
| implements | 表明一个类实现了给定的接口 |
| import | 表明要访问指定的类或包 |
| instanceof | 用来测试一个对象是否是指定类型的实例对象 |
| int | 基本数据类型之一,整数类型,占4个字节符 |
| interface | 接口 |
| long | 基本数据类型之一,长整数类型,占8个字节符 |
| native | 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 |
| new | 用来创建新实例对象 |
| package | 包 |
| private | 一种访问控制方式:私用模式 |
| protected | 一种访问控制方式:保护模式 |
| public | 一种访问控制方式:共用模式 |
| return | 从成员方法中返回数据 |
| short | 基本数据类型之一,短整数类型,占2个字节符 |
| static | 表明具有静态属性 |
| strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范 |
| super | 表明当前对象的父类型的引用或者父类型的构造方法 |
| switch | 分支语句结构的引导词 |
| synchronized | 表明一段代码需要同步执行 |
| this | 指向当前实例对象的引用 |
| throw | 抛出一个异常 |
| throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
| transient | 声明不用序列化的成员域 |
| try | 尝试一个可能抛出异常的程序块 |
| void | 声明当前成员方法没有返回值 |
| volatile | 表明两个或者多个变量必须同步地发生变化 |
| while | 用在循环结构中 |
2.强制转换
由于Java是强类型语言,所以进行有些运算的时候,需要用到类型转换:
低 高
byte ——> short ——> char ——> int ——> long ——> float ——> double
强制转换(高转低)
数字之间
short s = 100;
int i = s; // 自动类型转换,安全
int j = 30000; // 一个大于short类型能表示的最大值的int
short k = (short) j; // 强制类型转换,可能导致数据丢失
数字字符之间
int c=23456;
char d=(char) c; //将int类型的c强转成char类型的d
System.out.println(d); //并且能够解析输出
注意点:
1、强制类型转换可能导致溢出或损失精度
2、在把容量大的类型转换为容量小的类型时必须使用强制类型转换
3、浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入
4、不能对布尔值进行转换
5、不能把对象类型转换为不相干的类型
自动转换(低转高)
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算
char Value1 ='a';
int Value2=Value1+10;
System.out.println(Value2);//107
自动转换有以下规律:
1、小的类型自动转化为大的类型
2、整数类型可以自动转化为浮点类型,可能会产生舍入误差
3、字符可以自动提升为整数
二、字面值、变量、常量、作用域
1.字面值
字面值 就是数据。
注意:
Java语言中所有字符串型字面值必须用双引号括起来,双引号是半角。 eg:“abc”、“张广荣”
Java语言中所有字符型字面值必须用单引号括起来,单引号是半角。 eg:‘A’、‘人’
2.变量
变量是内存中存储数据的最基本的单元。,包含三部分:数据类型、名称、字面值【数据】。
注意:
每个变量都有类型,类型可以是基本类型,也可以是应用类型。
变量名必须是合法的标识符。
变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
2.1访问变量的两种形式
第一种:读取变量中保存的具体数据 get/获取
第二种:修改变量中保存的具体数据 set/设置
i=10; //set
System.out.println(i); //get
3.变量作用域
局部变量
块作用域(Block Scope)
块作用域是指在大括号
{}内定义的变量的作用域。变量只在其定义的块内可见和有效,包括循环、条件语句和代码块。也是变量的生命周期。class MyClass { public void myMethod() { // 局部变量:必须声明和初始值化 int localVar = 100; System.out.println(localVar); } } public class Main { public static void main(String[] args) { MyClass obj = new MyClass(); obj.myMethod(); // 输出:100 // System.out.println(localVar); // 错误,localVar在myMethod方法完成调用后就会被销毁 } }
类变量/静态变量
方法作用域(Method Scope)
方法作用域指的是在方法内定义的变量的作用域。变量在整个方法内可见和有效。
class MyClass { // 静态变量 private static int staticVariable = 0; public MyClass() { staticVariable++; } public void printStaticVariable() { System.out.println(staticVariable); } } public class Main { public static void main(String[] args) { MyClass obj1 = new MyClass(); MyClass obj2 = new MyClass(); obj1.printStaticVariable(); // 输出:2 obj2.printStaticVariable(); // 输出:2 } }静态变量是使用
static关键字声明的类变量。它们属于整个类,而不是任何特定实例。所有实例共享同一个静态变量。类的静态变量在这个类的每一个方法中都能访问
实例变量/全局变量
类作用域(Class Scope)
类作用域指的是在类中定义的成员变量的作用域。成员变量在整个类内可见和有效。
class Person { //全局变量,类的属性 String name; int age; //构造方法 public Person(String name, int age) { this.name = name;//在每个方法中都能访问到这个全局变量 this.age = age;//在每个方法中都能访问到这个全局变量 } //获取年龄 public int getAge() { return age;//在每个方法中都能访问到这个全局变量 } //设置年龄 public void setAge(int age) { this.age = age;//在每个方法中都能访问到这个全局变量 } //获取名字 public String getName() { return name;//在每个方法中都能访问到这个全局变量 } //设置名字 public void setName(String name) { this.name = name;//在每个方法中都能访问到这个全局变量 } }因此,全局变量即使不进行数值初始化,也能访问获取来输出一个值,但布尔类型函数只能输出false,另外除了基本类型外,未初始化输出则为默认值null。
4.常量
初始化后不能再改变值,是一种特殊的变量,值被设定后,再程序运行过程中不允许被改变。
final 数据类型 常量名=值;
final double PI=3.14;
一般常量名使用大写字符。
三、运算符
1.算术运算符
| + | 求和 eg:3+2=5 |
| - | 求差 eg:5-2=3 |
| * | 求积 eg:3*2=6 |
| / | 求商 eg:8/4=2 |
| % | 取余数(求模) eg:9%4=1 |
| ++ | 自加 ++a:先自增1,再进行运算;a++:先运算,再自增1 |
| - - | 自减 - -a:先自增1,再进行运算;a- -:先运算,再自增1 |
2.关系运算符
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| == | 等于 |
| != | 不等于 |
| instanceof | 引用类型变量(object) instanceof 类(class) 判断前面的对象是否属于后面的类,或者属于其子类; 是返回true,不是返回false |
3.逻辑运算符
逻辑与 &&
表达式1 && 表达式2,并且左右两边的表达式的结果必须是Boolean类型的。
并且在逻辑与表达式中含有一个短路现象,意思就是如果表达式1为真,那么表达式2才会执行。也就是说如果表达式1是假的,那么表达式2是不会执行的,直接跳过执行表达式2直接得出结果。
全真则真,全假则假,一真一假为假
逻辑或 ||
表达式1 || 表达式2,并且左右两边的表达式的结果必须是Boolean类型的。
逻辑或操作符也含有短路现象,但是逻辑或和逻辑与的短路现象不一样,当表达式1为真时,表达式2不在执行,直接输出结果;表达式1为假时,表达式2执行。
全假为假,其余为真
逻辑非 !
逻辑非很好理解,就是取反的意思,假的变成真的,真的变成假的
但是Java的逻辑非和C语言的逻辑非不太一样,Java的逻辑非的参数只能对结果是Boolean类型的,参数不可以是变量,但是C语言的可以。
4.位运算符
位运算符主要有:& 、 | 、^
Java中数据存储的最小单位是字节,数据操作的最小单位是比特位,字节是最小的存储单位,一个字节由8个比特位组成,多个字节组合在一起可以表示不同的数据类型。
按位与&
如果两个二进制位都是1,那结果就是1,否则为0;
int a = 10; int b = 5; System.out.println(a & b);
按位或|
如果两个二进制位都是0的话,结果就为0,否则为1.
int a = 10; int b = 5; System.out.println(a | b);
按位异或^
如果两个数字的二进制位序列相同,那么结果为0,如果二进制位不同则结果为1
int a = 13; int b = 11; System.out.println(a ^ b);
按位取反~
按位取反包括符号位也会取反,也就是说,按位取反有正负数转换的效果。
int a = 13; //二进制 为0000 1101 System.out.println(~a); /*在这个过程中首先对原码进行取反得到补码 1111 0010,最大值的1代表负号 其次对所得到的补码进行第二次取反: 0000 1101 最后得到的反码+1,并添上负号代表: 1 1110 最高位1依旧代表负号,化成十进制为: - 14 */
补充
涉及到位操作符
左移操作符<< 二进制序列的最左位不要了,将右边的代码移动覆盖过去
System.out.println(1 << 1);//等于2
右移操作符>> 抛弃最右边的,在最左侧补符号位(正数补0 ,负数补1)
System.out.println(2 >> 1);//等于1 System.out.println(-2 >> 1);//等于-1
无符号右移>>> 无符号右移,无论是移动正数还是负数,结果都只能是正数。
5.条件运算符
语法格式:表达式1?表达式2:表达式3
表达式1为真,执行表达式2,表达式3不执行
表达式1为假,表达式2不执行,执行表达式3int a = 10; int b = 20; int c = a > b ? a : b; System.out.println(c);
6.赋值运算符
| = | 将数值赋给变量。 eg: int a=4;将数值4赋值给变量a |
| += | eg:a+=1 展开为:a=a+1 |
| -= | eg:a-=1 展开为:a=a-1 |
| *= | eg:a*=1 展开为:a=a*1 |
| /= | eg:a/=1 展开为:a=a/1 |







1458

被折叠的 条评论
为什么被折叠?



