前言
java初学者第一周学习成果与总结
一.Java的基础语法
1.注释: (1)注释概述:注释在指定位置添加的说明性信息
注释不参与程序的运行,仅起到说明作用
(2注释分类:单行注释——格式://注释信息
多行注释——格式:/*注释信息*/
文档注释——格式:/**注释信息*/
2.对象
1.对象与类对象:对象是类的一个实例,有状态和行为。
类:类是一个模板,它描述一类对象的行为和状态
2构造方法.:
每个类都有构造方法。如果没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认构造方法。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
3.创建对象:
- 声明:声明一个对象,包括对象名称和对象类型。
- 实例化:使用关键字new来创建一个对象。
- 初始化:使用new创建对象时,会调用构造方法初始化对象。 例子:
public class Puppy{ public Puppy(String name){ //这个构造器仅有一个参数:name System.out.println("小狗的名字是 : " + name ); } public static void main(String[] args){ // 下面的语句将创建一个Puppy对象 Puppy myPuppy = new Puppy( "tommy" ); } }
4.源文件规则
1.一个源文件中只能有一个 public 类
2.一个源文件可以有多个非 public 类
3.源文件的名称应该和 public 类的类名保持一致。例如:源文件中 public 类的类名是 Employee,那么源文件应该命名为Employee.java。
4.如果一个类定义在某个包中,那么 package 语句应该在源文件的首行。
5.如果源文件包含 import 语句,那么应该放在 package 语句和类定义之间。如果没有 package 语句,那么 import 语句应该在源文件中最前面。
6.import 语句和 package 语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。
类有若干种访问级别,并且类也分不同的类型:抽象类和 final 类等。这些将在访问控制章节介绍。除了上面提到的几种类型,Java 还有一些特殊的类,如:内部类、匿名类
3.基本数据类型
序号 | 数据类型 | 大小/位 | 可表示的数据范围 | 默认值 |
1 | long(长整数) | 64 | -9223372036854775808~9223372036854775807 | 0L |
2 | int(整数) | 32 | -2147483648~2147483647 | 0 |
3 | short(短整数) | 16 | -32768 ~ 32767 | (short)0 |
4 | double(双精度) | 64 | -1.7E308 ~ 1.7E308 | 0.0d |
5 | byte(位) | 8 | -128 ~ 127 | (byte)0 |
6 | char(字符) | 16 | 0 ~ 255 | \u0000(空,“”) |
7 | float(单精度) | 32 | -3.4E38 ~ 3.4E38 | 0.0f |
8 | boolean(布尔) | — | true 或 false | False |
转义字符:
序号 | 转意字符 | 描述 | 序号 | 转意字符 | 描述 |
1 | \f | 换页 | 5 | \r | 归位 |
2 | \ \ | 反斜线 | 6 | \ " | 双引号 |
3 | \b | 倒退一格 | 7 | \t | 制表符 Tab |
4 | \ ’ | 单引号 | 8 | \n | 换行 |
数据转换 一 .自动转化:
在 Java 中如果已经定义好了一个变量,在使用过程中如果需要另一种数据类型表示时,Java 会在下面的条件成立的时候会自动做数据类型转换。
1 .转换前和转换后的数据类型是兼容的。
2 . 转后后的数据类型表示的范围比转换前的数据类型范围要大。
二 .强制转换:强制类型转换也叫显示类型转换。前提是两个数据类型要兼容的。他可以分为扩大转换和缩小转换。如果是缩小转换,那么会将数据的精度丢失。强制类型转换需要在数据前将数据类型给出进行强制转换,从大范围到小范围的数据转换的时候,会将数据精确度丢失。(小数默认是 double 类型浮点型,在定义 float 类型时必须在数字后面跟上 F 或者 f。定义double类型可以不带d/D)
4.JAVA变量类型 Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
局部变量(Local Variables):定义在方法、构造方法或语句块中的变量,作用域只限于当前方法、构造方法或语句块中。局部变量必须在使用前声明,并且不能被访问修饰符修饰。
成员变量(Instance Variables):定义在类中、方法之外的变量,作用域为整个类,可以被类中的任何方法、构造方法和语句块访问。成员变量可以被访问修饰符修饰。
静态变量(Class Variables):定义在类中、方法之外的变量,并且使用 static 关键字修饰,作用域为整个类,可以被类中的任何方法、构造方法和语句块访问,静态变量的值在程序运行期间只有一个副本。静态变量可以被访问修饰符修饰。
参数变量(Parameters):方法定义时声明的变量,作为调用该方法时传递给方法的值。参数变量的作用域只限于方法内部。
一、类变量(静态变量)
类变量在类里定义,声明变量时,在变量类型前面加上 static 即可,但必须在方法之外。
类变量有默认值,数值型变量默认值是 0(或者0.0),布尔型默认值是 false,引用类型默认值是 null。
类变量可以直接在该类的方法里使用。
二、实例变量(成员变量)
实例变量声明在一个类中,但在方法、构造方法和语句块之外 。
实例变量具有默认值。数值型变量的默认值是0(或者0.0),布尔型变量的默认值是false,引 用类型变量的默认值是null。
实例变量从属于对象。
当一个对象被实例化之后,每个成员变量的值就跟着确定。
成员变量在对象创建的时候创建,在对象被销毁的时候销毁。
成员变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息。
成员变量可以声明在使用前或者使用后。
访问修饰符可以修饰成员变量。
成员变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把成员变量设为私有。通过使用访问修饰符可以使成员变量对子类可见。
public class RunoobTest {
// 成员变量
private int instanceVar;
// 静态变量
private static int staticVar;
public void method(int paramVar) {
// 局部变量
int localVar = 10;
// 使用变量
instanceVar = localVar;
staticVar = paramVar;
System.out.println("成员变量: " + instanceVar);
System.out.println("静态变量: " + staticVar);
System.out.println("参数变量: " + paramVar);
System.out.println("局部变量: " + localVar);
}
public static void main(String[] args) {
RunoobTest v = new RunoobTest();
v.method(20);
}
}
三、局部变量
局部变量声明在方法、构造方法或者语句块中。
局部变量没有默认值。所以局部变量被声明后,必须经过初始化,才可以使用。
局部变量只能在自己的方法中被使用。
四、常量
常量:初始化之后不会再变动的值。
常量名一般使用大写字符。
常量也是与类相关的,但它是用 final 关键字修饰的变量,一旦被赋值就不能再修改。与静态变量不同的是,常量在编译时就已经确定了它的值,而静态变量的值可以在运行时改变。另外,常量通常用于存储一些固定的值,如数学常数、配置信息等,而静态变量通常用于存储可变的数据,如计数器、全局状态等。
总之,静态变量是与类相关的变量,具有唯一性和共享性,可以用于存储整个程序都需要使用的数据,但需要注意初始化时机和与常量的区别。
成员变量 | 局部变量 | 静态变量 | |
定义位置 | 在类中,方法外 | 方法中,或者方法的形式参数 | 在类中,方法外 |
初始化值 | 有默认初始化值 | 无,先定义,赋值后才能使用 | 有默认初始化值 |
调用方式 | 有默认初始化值 | --- | 对象调用,类名调用 |
储存位置 | 堆中 | 栈中 | 方法区 |
生命周期 | 与对象共存亡 | 与方法共存亡 | 与类共存亡 |
别名 | 实例变量 | --- | 类变量 |
5.Java修饰符
一 访问运算符
Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。
default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
public : 对所有类可见。使用对象:类、接口、变量、方法
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
( 如果在类、变量、方法或构造函数的定义中没有指定任何访问修饰符,那么它们就默认具有默认访问修饰符。非
默认访问修饰符的访问级别是包级别(package-level),即只能被同一包中的其他类访问。)
二 非访问运算符
static 修饰符,用来修饰类方法和类变量。
final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
abstract 修饰符,用来创建抽象类和抽象方法。
synchronized 和 volatile 修饰符,主要用于线程的编程。
二.java运算
1.算数运算符
操作符 | 描述 | 例子 |
+ | 加法 - 相加运算符两侧的值 | A + B 等于 30 |
- | 减法 - 左操作数减去右操作数 | A – B 等于 -10 |
* | 乘法 - 相乘操作符两侧的值 | A * B等于200 |
/ | 除法 - 左操作数除以右操作数 | B / A等于2 |
% | 取余 - 左操作数除以右操作数的余数 | B%A等于0 |
++ | 自增: 操作数的值增加1 | B++ 或 ++B 等于 21 |
-- | 自减: 操作数的值减少1 | B-- 或 --B 等于 19 |
2.关系运算符
运算符 | 描述 | 例子 |
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | (A == B)为假。 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (A> B)为假。 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (A <B)为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A> = B)为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | (A <= B)为真。 |
3.位运算符
操作符 | 描述 |
& | 如果相对应位都是1,则结果为1,否则为0 |
| | 如果相对应位都是 0,则结果为 0,否则为 1 |
^ | 如果相对应位值相同,则结果为0,否则为1 |
〜 | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 |
4.赋值运算符
操作符 | 描述 | 例子 |
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B将把A + B得到的值赋给C |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | 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 |
5.逻辑运算符
操作符 | 描述 |
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 |
| | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 |
6.运算符优先级
类别 | 操作符 | 关联性 |
后缀 | () [] . (点操作符) | 左到右 |
一元 | expr++ expr-- | 从左到右 |
一元 | ++expr --expr + - ~ ! | 从右到左 |
乘性 | * /% | 左到右 |
加性 | + - | 左到右 |
移位 | >> >>> << | 左到右 |
关系 | > >= < <= | 左到右 |
相等 | == != | 左到右 |
按位与 | & | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | | | | 左到右 |
条件 | ?: | 从右到左 |
赋值 | = + = - = * = / =%= >> = << =&= ^ = | = | 从右到左 |
逗号 | , | 左到右 |
总结
以上就是一周对Java的学习与初步了解,但对于以上内容并不能完全掌握,甚至还看不懂,还需反复重温,思考。