Java学习笔记之---基础语法
Java学习笔记之---基础语法
一. Java中的命名规范
(一)包名
由多个单词组成时,所有字母小写(例如:onetwo)
(二)类名和接口
由多个单词组成时,所有单词首字母大写(例如:OneTwo)
(三)变量名和函数名
由多个单词组成时,第一个单词首字母小写,其他单词首字母大写(例如:oneTwo)
(四)常量名
由多个单词组成时,所有字母均大写,并且单词间用_连接(例如:ONE_TWO)
二. 标识符
- 可以由26个英文字母,数字,_和$组成
- 标识符大小写敏感
- 不能以数字开头
- 可以为任意长度
三. 修饰符
(一)访问修饰符
- default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
- private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
- public : 对所有类可见。使用对象:类、接口、变量、方法
- protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
我们可以通过以下表来说明访问权限:
访问控制 |
|||||
修饰符 |
当前类 |
同一包内 |
子孙类(同一包) |
子孙类(不同包) |
其他包 |
public |
Y |
Y |
Y |
Y |
Y |
protected |
Y |
Y |
Y |
Y/N(说明) |
N |
default |
Y |
Y |
Y |
N |
N |
private |
Y |
N |
N |
N |
N |
(二)非访问修饰符
static 修饰符,用来修饰类方法和类变量。
final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
1.final修饰class:该类没有子类 public final class/final public class
2.final修饰方法:该方法允许被子类正常继承,但不允许被子类重写
3.final修饰方法内局部变量:只要在具体使用之前赋值即可,一旦赋值,不允许被修改
4.final修饰类中成员属性:赋值过程:a.定义直接初始化 b.构造方法 c.构造代码块
5.final修饰基本数据类型:赋值后不能被改变
6.final修饰引用数据类型:初始化后不能再指向另一个对象,但内容可以改变
abstract 修饰符,用来创建抽象类和抽象方法。
synchronized 和 volatile 修饰符,主要用于线程的编程。
四.基本数据类型
(一)内置数据类型
(1)整数型
- byte
- int
- short
- long
(2)浮点型
- double
- 2.float
(3)字符型
- char
(4)布尔型
- Boolean
(二)引用数据类型
- 在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。
- 对象、数组都是引用数据类型。
- 所有引用类型的默认值都是null。
- 一个引用变量可以用来引用任何与之兼容的类型。
五.变量类型
(一)局部变量
- 声明在构造方法、静态方法、实例方法、代码块中的变量,都是局部变量;
- 不能使用static和访问修饰符修饰;
- 可以使用final修饰,即为常量,不必在声明语句中赋值;
- 当执行局部变量所在的方法或代码块时,才有机会被创建,在方法或代码块执行结束后被自动销毁;
- 局部变量在内存的栈区分配;
- 局部变量在使用之前必须要先赋值;
(二)实例变量
- 声明在所有方法体和代码块之外,并且没有使用static修饰的变量,叫做实例变量;
- 可以使用访问修饰符和final修饰;
- 使用final修饰时,一定要赋值;
- 实例变量是在对象被创建时创建,对象被销毁时销毁;
- 作用域范围在整个类中;
(三)类的变量
- 声明在所有方法体和代码块之外,并且使用static修饰的变量;
- 可以使用访问修饰符修饰;
- 一般配合final使用,即public static fianl,标识符使用大写;
- 类变量被分配在静态存储区,是被所有该类的对象共享数据;
- 类变量是在程序开始时被创建,程序结束时销毁;
六.运算符
(一)算数运算符
操作符 |
描述 |
例子 |
+ |
加法 - 相加运算符两侧的值 |
A + B 等于 30 |
- |
减法 - 左操作数减去右操作数 |
A – B 等于 -10 |
* |
乘法 - 相乘操作符两侧的值 |
A * B等于200 |
/ |
除法 - 左操作数除以右操作数 |
B / A等于2 |
% |
取余 - 左操作数除以右操作数的余数 |
B%A等于0 |
++ |
自增: 操作数的值增加1 |
B++ 或 ++B 等于 21(区别详见下文) |
-- |
自减: 操作数的值减少1 |
B-- 或 --B 等于 19(区别详见下文) |
(二)关系运算符
运算符 |
描述 |
例子 |
== |
检查如果两个操作数的值是否相等,如果相等则条件为真。 |
(A == B)为假。 |
!= |
检查如果两个操作数的值是否相等,如果值不相等则条件为真。 |
(A != B) 为真。 |
> |
检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 |
(A> B)为假。 |
< |
检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 |
(A <B)为真。 |
>= |
检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 |
(A> = B)为假。 |
<= |
检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 |
(A <= B)为真。 |
(三)位运算符
操作符 |
描述 |
例子 |
& |
如果相对应位都是1,则结果为1,否则为0 |
(A&B),得到12,即0000 1100 |
| |
如果相对应位都是0,则结果为0,否则为1 |
(A | B)得到61,即 0011 1101 |
^ |
如果相对应位值相同,则结果为0,否则为1 |
(A ^ B)得到49,即 0011 0001 |
〜 |
按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 |
(〜A)得到-61,即1100 0011 |
<< |
按位左移运算符。左操作数按位左移右操作数指定的位数。 |
A << 2得到240,即 1111 0000 |
>> |
按位右移运算符。左操作数按位右移右操作数指定的位数。 |
A >> 2得到15即 1111 |
>>> |
按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 |
A>>>2得到15即0000 1111 |
(四)逻辑运算符
操作符 |
描述 |
例子 |
&& |
称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 |
(A && B)为假。 |
| | |
称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 |
(A | | B)为真。 |
! |
称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 |
!(A && B)为真。 |
(五)赋值运算符
操作符 |
描述 |
例子 |
= |
简单的赋值运算符,将右操作数的值赋给左侧操作数 |
C = A + B将把A + B得到的值赋给C |
+ = |
加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 |
C + = A等价于C = C + A |
- = |
减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 |
C - = A等价于C = C - |
* = |
乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 |
C * = A等价于C = C * A |
/ = |
除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 |
C / = A等价于C = C / A |
(%)= |
取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 |
C%= A等价于C = C%A |
<< = |
左移位赋值运算符 |
C << = 2等价于C = C << 2 |
>> = |
右移位赋值运算符 |
C >> = 2等价于C = C >> 2 |
&= |
按位与赋值运算符 |
C&= 2等价于C = C&2 |
^ = |
按位异或赋值操作符 |
C ^ = 2等价于C = C ^ 2 |
| = |
按位或赋值操作符 |
C | = 2等价于C = C | 2 |