java基础
注释
-
书写注释是一个非常好的习惯。
-
平时写代码一定要注意规范。
-
Java中的注释有三种:
-
单行注释
-
多行注释
-
文档注释
-
//单行注释 :只能注释一行文字
// 注释内容
//我是单行注释
//多行注释:可以注释一段文字
/* 注释内容 */
/*
我是多行注释
*/
//JavaDoc:文档注释
/** 注释内容 */
/**
* @Description HelloWorld
* @Author 小羊是头猪
*/
标识符
Java所有的组成部分都需要名字。类名,变量名以及方法名都被称之为标识符。
关键字
不能使用保留关键字来命名类、方法或变量。
将Java关键字进行分类,并将Java关键字含义整理成表,如下表所示:
| Java关键字类别 | Java关键字 | 关键字含义 |
|---|---|---|
| 访问控制 | private | 一种访问控制方式:私用模式,访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量) |
| 访问控制 | protected | 一种访问控制方式:保护模式,可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符 |
| 访问控制 | public | 一种访问控制方式:共用模式,可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。 |
| 类、方法和变量修饰符 | abstract | 表明类或者成员方法具有抽象属性,用于修改类或方法 |
| 类、方法和变量修饰符 | class | 声明一个类,用来声明新的Java类 |
| 类、方法和变量修饰符 | extends | 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口 |
| 类、方法和变量修饰符 | final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 |
| 类、方法和变量修饰符 | implements | 表明一个类实现了给定的接口 |
| 类、方法和变量修饰符 | interface | 接口 |
| 类、方法和变量修饰符 | native | 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 |
| 类、方法和变量修饰符 | new | 用来创建新实例对象 |
| 类、方法和变量修饰符 | static | 表明具有静态属性 |
| 类、方法和变量修饰符 | strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范 |
| 类、方法和变量修饰符 | synchronized | 表明一段代码需要同步执行 |
| 类、方法和变量修饰符 | transient | 声明不用序列化的成员域 |
| 类、方法和变量修饰符 | volatile | 表明两个或者多个变量必须同步地发生变化 |
| 程序控制 | break | 提前跳出一个块 |
| 程序控制 | continue | 回到一个块的开始处 |
| 程序控制 | return | 从成员方法中返回数据 |
| 程序控制 | do | 用在do-while循环结构中 |
| 程序控制 | while | 用在循环结构中 |
| 程序控制 | if | 条件语句的引导词 |
| 程序控制 | else | 用在条件语句中,表明当条件不成立时的分支 |
| 程序控制 | for | 一种循环结构的引导词 |
| 程序控制 | instanceof | 用来测试一个对象是否是指定类型的实例对象 |
| 程序控制 | switch | 分支语句结构的引导词 |
| 程序控制 | case | 用在switch语句之中,表示其中的一个分支 |
| 程序控制 | default | 默认,例如:用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现 |
| 错误处理 | try | 尝试一个可能抛出异常的程序块 |
| 错误处理 | catch | 用在异常处理中,用来捕捉异常 |
| 错误处理 | throw | 抛出一个异常 |
| 错误处理 | throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
| 包相关 | import | 表明要访问指定的类或包 |
| 包相关 | package | 包 |
| 基本类型 | boolean | 基本数据类型之一,声明布尔类型的关键字 |
| 基本类型 | byte | 基本数据类型之一,字节类型 |
| 基本类型 | char | 基本数据类型之一,字符类型 |
| 基本类型 | double | 基本数据类型之一,双精度浮点数类型 |
| 基本类型 | float | 基本数据类型之一,单精度浮点数类型 |
| 基本类型 | int | 基本数据类型之一,整数类型 |
| 基本类型 | long | 基本数据类型之一,长整数类型 |
| 基本类型 | short | 基本数据类型之一,短整数类型 |
| 基本类型 | null | 空,表示无值,不能将null赋给原始类型(byte、short、int、long、char、float、double、boolean)变量 |
| 基本类型 | true | 真,boolean变量的两个合法值中的一个 |
| 基本类型 | false | 假,boolean变量的两个合法值之一 |
| 变量引用 | super | 表明当前对象的父类型的引用或者父类型的构造方法 |
| 变量引用 | this | 指向当前实例对象的引用,用于引用当前实例 |
| 变量引用 | void | 声明当前成员方法没有返回值,void可以用作方法的返回类型,以指示该方法不返回值 |
| 保留字 | goto | 保留关键字,没有具体含义 |
| 保留字 | const | 保留关键字,没有具体含义,是一个类型修饰符,使用const声明的对象不能更新 |
命名规则
-
所有的标识符都应该以字母(A-Z或a-z)下划线(_),美元符号($)开头。但是不能以数字开头。
-
首字符后可以跟字母(A-Z或a-z)、下划线(_)、美元符($)或数字的任何字符组合。
-
不能使用java中的关键字做标识符。
-
Java标识符大小写敏感,长度无限制。注意:不能使用java中的关键字做标识符。
数据类型
-
强类型语言
要求变量的使用严格符合规定,所有变量都必须先定义后才能使用
-
弱类型语言
java的数据类型分为两大类:
-
基本类型
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
数据类型 字节大小 默认值 byte 1个字节 0 short 2个字节 0 int 4个字节 0 long 8个字节 0L float 4个字节 0.0f double 8个字节 0.0d char 2个字节 'u0000' boolean 1位 false -
引用类型
-
引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。
-
对象、数组都是引用数据类型。
-
所有引用类型的默认值都是null。
-
一个引用变量可以用来引用任何与之兼容的类型。
-

类型转换
-
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
低--------------------------------------------------------------------->高
byte,short,char —> int —> long —> float —> double
-
运算中,不同类型的数据先转换为同一数据类型,然后进行运算。
强制类型转换
//强制转换 (类型)变量名 高-->低
int i = 128;
byte b = (byte)i;
System.out.println(b);//-128,溢出
自动类型转换
//自动转换 低-->高
注意点
/*
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内存逸出,或者精度问题
*/
//操作比较大的数的时候,注意溢出问题
//JDK新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total1 = money * years;//-1474836480,计算的时候溢出了
long total2 = money * years;//默认是int,转换之前已经存在问题了
long total3 = money * ((long)years);//先把一个数转换成long
System.out.println(total1);//-1474836480
System.out.println(total2);//-1474836480
System.out.println(total3);//20000000000
变量
-
变量是什么:就是可以变化的量
-
Java是一种强类型语言,每个变量都必须先声明其类型。
-
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
type varName [=value][{varName[=value]}];
//数据类型 变量名 = 值; 可以用逗号隔开来声明多个同类型变量。
注意事项:
-
每个变量都有类型,类型可以是基本类型,也可以是引用类型。
-
变量名必须是合法的标识符。
-
变量声明是一条完整的语句,因此每个声明都必须以分号结束。
变量作用域
-
类变量
-
实例变量
-
局部变量
public class Variable {
static int allClicks = 0; //类变量
String str = "HelloWorld"; //实例变量
public void method(){
int i = 0; //局部变量
}
}
变量的命名规则
-
所有变量、方法、类名:见名知意
-
类成员变量:首字母小写和驼峰原则:monthSalary
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线:MAX_VALUE
-
类名:首字母大写和驼峰原则:Man,GoodMan
-
方法名:首字母小写和驼峰原则:run(),runRun()
常量
-
常量:初始化之后不能再改变值!不会变动的值。
-
所谓常量可以理解为特殊的变量,它的值被设定之后,在程序运行过程中不允许被改变。
final 常量名=值;
final double PI = 3.14; -
常量名一般使用大写字符。
运算符
-
Java 运算符
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:
-
算术运算符
-
关系运算符
-
位运算符
-
逻辑运算符
-
赋值运算符
-
其他运算符
算术运算符
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。
表格中的实例假设整数变量A的值为10,变量B的值为20:
操作符 描述 例子 + 加法 - 相加运算符两侧的值 A + B等于30 - 减法 - 左操作数减去右操作数 A – B等于-10 * 乘法 - 相乘操作符两侧的值 A * B等于200 / 除法 - 左操作数除以右操作数 B / A等于2 % 取模 - 左操作数除以右操作数的余数 B%A等于0 ++ 自增 - 操作数的值增加1 B++ 或 ++B 等于 21 -- 自减 - 操作数的值减少1 B-- 或 --B 等于 19 -
自增、自减 相关注意点
//++ -- 自增 自减 一元运算符
int a = 3;
int b = a++;//执行完这行代码后,先给b赋值,再自增
System.out.println(a);//4
int c = ++a;//执行完这行代码后,先自增,再给c赋值
System.out.println(a);//5
System.out.println(b);//3
System.out.println(c);//5
逻辑与运算 相关注意点
int c = 5;
boolean d = (c<4)&&(c++<4);//逻辑与运算:第一个表达式为false,不再执行第二个表达式。
System.out.println(d);//false
System.out.println(c);//5
位运算符
| 符号 | 描述 | 运算规则 |
|---|---|---|
| & | 与 | 两个位都为1时,结果才为1 |
| | | 或 | 两个位都为0时,结果才为0 |
| ^ | 异或 | 两个位相同为0,相异为1 |
| ~ | 取反 | 0变1,1变0 |
| << | 左移 | 各二进位全部左移若干位,高位丢弃,低位补0 |
| >> | 右移 | 各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移) |
/*
A = 0011 1100
B = 0000 1101
------------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~B = 1111 0010
面试题:如何最快计算2*8
<< *2
>> /2
*/
int a = 2;
a = a << 3;
System.out.println(a);//16

浙公网安备 33010602011771号