Java
基础
jdk也称Java jdk,可以理解为Java的库也就是c语言中的头文件吧可能
sdk则是Java用用于开发软件所存在的一个概念,可以理解为开发工具
Java是一门具有面向对象的编程语言,Java性能强支持多线程运行
Java对大小写敏感,Java的类名开头字母需要大写,如果类名存在多个单词则需要每个单词首字母大写,而方法名则是开头需要小写,但是如果存在多个单词则和类名不一样,后面的需要大写,并且源文件名必须与方法名相同保存并加入Java后缀,否则会编译出错
java标识符必须以字母或者下划线以及$开头,并且对大小敏感,关键字不能作为标识符
Java修饰符分为访问控制和非访问控制符
Java变量分为局部变量和静态变量以及非静态变量
Java在5.0引入了枚举概念
Java注释与c语言和c++类似,但是加入了文档注释(文档注释以 /** 开始,以 */ 结束,通常出现在类、方法、字段等的声明前面,用于生成代码文档,这种注释可以被工具提取并生成 API 文档,如 JavaDoc。)
java继承有超类与子类俩个概念,被继承者称为超类,继承者则称为子类与派生类
Java接口则在继承中起作用,主要为为派生类定义需要用到的方法
java在创建对象时必须要有一个构造方法,一般Java会自动创建一个构造一个方法;构造的方法必须与类名一样且一个类可以有多个构造方法
Java源文件中可以有多个类,但是每个类各不相同并且也不能存在俩个相同的类
如果一个类定义在某个包中,那么 package 语句应该在源文件的首行;如果源文件包含 import 语句,那么应该放在 package 语句和类定义之间。如果没有 package 语句,那么 import 语句应该在源文件中最前面;import 语句和 package 语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。
Java内部类:在Java类中嵌套另外一个类
嵌套类分为静态内部类和非静态内部类,内部类可以直接访问外部类属性和方法,静态内部类无法访问外部类的成员,当想要外部类无法访问内部类时可以使用private来修饰也称为内部私有化;静态内部类使用staic关键字定义(静态内部类不用创建外部类来访问,因为可以直接访问)
Java匿名类是不能有名字的类,它们不能被引用,只能在创建时用 new 语句来声明它们;匿名类主要用于继承一个父类和实现一个接口
Java包用于对类和类的接口进行分类
Java中import语句用于提供一个合理的路径,使编译器可以找到某个类
数据类型
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型
数字类型:byte,shout,int,flout,double,long
字符类型:char
布尔类型:boolean(默认值为false)
int
,short
,long
,byte
的默认值是0。char
的默认值是\u0000
(空字符)。float
的默认值是0.0f
。double
的默认值是0.0d
。boolean
的默认值是false
。- 引用类型(类、接口、数组)的默认值是
null
。
JAVA中还存在另外一种基本类型 void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作
类型转化
**自动类型转化:整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。**转换从低级到高级
规则:必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。
强制类型转化
- 条件是转换的数据类型必须是兼容的。
- 格式:(type)value type是要强制类型转换后的数据类型 实例:
** 实例**
public class ForceTransform { public static void main(String[] args){ int i1 = 123; byte b = (byte)i1;//强制类型转换为byte System.out.println(“int强制类型转换为byte后的值等于”+b); } }
运行结果:
1 | int强制类型转换为byte后的值等于123 |
隐含强制类型转化
- 1、 整数的默认类型是 int。
- 小数默认是 double 类型浮点型,在定义 float 类型时必须在数字后面跟上 F 或者 f
- java 里使用 long 类型的数据一定要在数值后面加上 L,否则将作为整型解析:
数据类型转换必须满足如下规则:
- 不能对boolan类型进行类型转换。
- 不能把对象类型转换成不相关类的对象。
- 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
- 转换过程中可能导致溢出或损失精度,例如:
1
2int i =128;
byte b = (byte)i;因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。
- 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
1
2(int)23.7 == 23;
(int)-45.89f == -45
引用类型
- 在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。
- 对象、数组都是引用数据类型。
- 所有引用类型的默认值都是null。
- 一个引用变量可以用来引用任何与之兼容的类型。
- 例子:Site site = new Site(“Runoob”)。
变量
Java使用变量之前必须声明
局部变量
Java局部变量是在方法、构造函数或块内部声明的变量,Java局部变量使用前必须初始化,否则会无法编译;其作用域限制在声明它的代码块内部
实例变量
实例变量是在类中声明,但在方法、构造函数或块之外,它们属于类的实例,每个类的实例都有自己的副本;实例变量如果未初始化则会保存为自身的默认值我们可以通过对象访问实例变量,也可以通过类名访问静态变量
静态变量或类变量
使用static关键字声明,属于类但是不是实例,该变量会在类加载时初始化且只初始化一次,所有该类的实例共享一个类变量的值(表示这个静态变量被所有对象共享,并且每次改变会影响到其他对象)通过类名和实例名访问
参数变量
参数是方法或构造函数声明中的变量,用于接收调用该方法或构造函数时传递的值,*** 参数变量的作用域只限于方法内部***
命名规则
常量使用final修饰,使用全大写,单词之间下划线隔开
参数;类名,局部变量;静态变量;实例变量使用驼峰命名法,即小写字母开头,后面为大写字母
变量名应该具有描述性