Java基础核心总结
文章目录
- Java基础核心总结
- 前言
- 一、Java概述
- 二、Java基本语法
- 1.数据类型
- 2.常量与变量
- 3.控制流程
- 三、面向对象
- 1.类与对象
- 2.方法与属性
- 四、字符串
- 五、异常
前言
一、Java概述
Java的版本
JavaSE:Java平台标准版
JavaEE:Java平台企业版
Java是一门面向对象的编程语言
面向对象是一种软件开发思想,它是对现实世界的一种抽象,面向对象会把相关的数据和方法组织为一个整体看待。
通常都会把对象分成两个部分,静态部分和动态部分。静态部分也称属性,任何对象都具备自身的属性。
动态部分可以理解为这个对象会采取的行为或动作。
Java开发工具
JDK称为java开发包或开发工具。JDK是Java的核心,包括了Java运行环境和Java工具。
二、Java基本语法
1.数据类型
Java的数据类型可以分为四类八种:
整数型:byte,short,int,long
byte 字节,1byte = 8bits,也就是8位,byte的默认值是0;
short 2个字节,16位
int 4个字节,32位
long 8个字节,64位
浮点型:float 和 double
float 是单精度浮点型,占用4位, 默认值是0.0f;
double 是双精度浮点型,占用8位,默认值是0.0d;
字符型 : char
字符型只有一种,占2个字节,16位。
用unicode编码的一个中文字符占2个字节,另外中文字符采取gbk/gb2312编码是2个字节,用UTF8编码是3个字节。
布尔型 : boolean
布尔型也称逻辑型,只有true和false两个值,分别代表真假值判断。通常用于流程中的判断条件。
代码如下(示例):
2.常量与变量
声明变量:
int a //声明int型变量
int a = 1 //声明变量并赋值
声明常量
final double PI = 3.1415926D; //常量是不可变的量,只能赋值一次。
final是一个修饰符也是一个关键字
被final修饰的类无法被继承
对于一个final变量,
如果是基本数据类型的变量,其数值在初始化后不能修改
如果是引用类型的变量,对其初始化后不能再让其指向另一个对象
被final修饰的方法无法被重写,但允许重载
3.控制流程
条件语句
if条件语句可以单独判断结果
//if条件语句
int a = 6;
int b = 8;
if(a > b){
System.out.println("a大于b");
}
if(a < b){
System.out.println("a小于b");
}
if - else语句
通常表现为 如果满足某种条件,就进行某种处理,否则就进行另一种处理
//if - else条件语句
int a = 183;
if(a > 183){
System.out.println("身高大于183cm");
}else if(a > 0){
System.out.println("身高小于183cm");
}else{
system.out.println("输入错误");
}
switch语句
switch(month) {
case 12:
case 1:
case 2:
System.out.println("冬天");
break;
case 3:
case 4:
case 5:
System.out.println("春天");
break;
case 6:
case 7:
case 8:
System.out.println("夏天");
break;
case 9:
case 10:
case 11:
System.out.println("秋天");
break;
default:
System.out.print("月份不存在,请输入1-12月份数字");
循环语句
while循环语句
int i = 0;
while(i<10){
System.out.println(i);
i++;
}
do while语句
与while语句的区别是,至少要循环一次后,再判断条件是否成立。
//先执行循环条件,再进行判断
int i = 0;
do{
System.out.println(i);
i++;
}while(i<10);
for循环语句
//求和计算
int a = 0;
for(int i = 1;i<=100;i++){
a += i;
}
System.out.println(a);
三、面向对象
万物皆为对象,反映的是对事物的抽象化,具体化,实例化。
在Java中,用引用来指向对象。
1.类与对象
类是一种表现形式,Java中用class定义一个类,用来表示创建对象
//定义一个字符串对象 bcd ,并赋值给a1,a1在栈中定义,bcd存放在方法区中的字符串常量池
String a1 = "bcd";
//a2在栈中定义,是在运行时才会在堆中开辟内存空间,
String a2 = new String("bcd");
System.out.println(a1 == a2); //false,引用比较
System.out.println(a1.equals(a2)); //true,值比较
2.方法与属性
//创建一个对象Car,设置Car属性
class Car{
String color;
int power;
double speed;
public Car(String color,int power, double speed){
}
public void run(){
}
}
构造方法
//创建一个对象Car,设置Car属性
Car sCar = new Car();
sCar.color = "Silver";
sCar.power = 750;
sCar.speed = 300;
方法重载
重载时多态性的一种表现,
重载的条件:
方法名称必须相同
参数列表必须不同
返回类型可以相同也可以不同
class Car{
public void run(){
System.out.println("传统汽车是燃油车")
}
class EcoCar extends Car{
@Override
public void run(){
System.out.println("新能源汽车");
}
}
方法重写
一般是子类对父类的重写
class Car{
public void run(){
System.out.println("传统汽车是燃油车")
}
class EcoCar extends Car{
@Override
public void run(){
System.out.println("新能源汽车");
}
}
四、字符串
String类是Java.lang包下面的核心类,String类被final关键字修饰,也就是不能被继承,字符串一旦创建不能再修改。
字符串常量池
在Java的分配中,总共3种常量池,Class常量池,运行时常量池,字符串常量池。
每当创建字符串常量是,JVM会首先检查字符串常量池,如果该字符串已经存在常量池中,直接返回常量池中的实例引用。如果字符串不存在常量池中,就会实例化该字符串并且将其放在常量池中。
常量池中一定不存在两个相同的字符串。
== 与equals的区别
==比较两个对象在内存里是不是同一个对象,比较的是内存中的存储位置。比较的是引用。
equals是值比较,在equals(Object obj)中的方法中对equals方法进行了重写,
String,StringBuffer,StringBuilder区别
String的值不可改变的,这就导致每次对String的操作都会产生新的String对象,会影响效率,且占用大量的内存空间。
StringBuffer底层方法使用了synchronized关键字,线程比较安全,但效率较StringBuilder慢。
StringBuilder是可变类,任何对象对他指向的字符串的操作都不会产生新的对象,但单线程不安全。
五、异常
常见的异常
ArrayIndexOutBoundsException 数组下标越界异常
NullPointerException 空指针异常
llegalArgumentException 非法参数异常
NegativeArraySizeException 数组长度异常
ClassCastException 类型转换异常