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 类型转换异常