Java(基础+高级)笔记

一、Java开发入门

1.1、JDK的使用
1、JDK(开发工具包)、JRE(运行时环境)、JVM(虚拟机)之间的关系

JRE包括JVM、Java基础类库
JDK包括JVM、java基础类库、开发工具
在这里插入图片描述

编译java程序需要javac命令

二、Java编程基础

2.1、Java的基本语法

1、Java基本语法格式
1.java中程序分为结构定义语句和功能执行语句
2.java语言区分大小写
3.+连接两个字符串

2、Java中的注释
1.单行注释 //
2.多行注释 /* 代码*/
3.文档注释 /** */
多行注释可以嵌套单行注释,多行注释不可用嵌套多行注释

3、Java中的关键字
abstract定义抽象类、boolean定义布尔类型字符串、break、byte、case、catch、char、class、default、double、else、extends、final、finally、float、for、if、implements、import、int、interface、long、new、package、private、protected、public、return、short、static、super、switch、synchronized、this、throw、throws、try、void、while

4、Java中的标识符
1.标识符可以由任意顺序的大小写字母、数字、下滑线和美元符组成,但是不能以数字开头
2.也不能是java中的关键字

包名所有字母一律小写
类名和接口名每个单词的首字母都要大写
常量名每个字母都要大写,单词之间用下划线连接
变量名和方法名的第一个单词首字母小写,从第二个单词开始每个单词首字母大写

2.2、Java中的变量和常量

1、变量的数据类型
在这里插入图片描述

类型名占用空间
byte8位(1字节)
short16位(2字节)
int32位(4字节)
long64位(8字节)
float32位(4字节)
double64位(8字节)

在定义long类型时,如果所赋值超过int类型取值范围,后面要加一个字母L(或者l)
在定义时,一个小数会被默认为double类型,因此在定义float类型时后面一定要加字母F(或者f)

char c='a'; //为一个char类型的变量c赋值字符'a'
char ch=97;

2、变量的类型转换
在这里插入图片描述
强制类型转换

		double b=10.5;
		int a=(int) b;
		System.out.println(a+b);
		20.5

3、Java中的常量

1.整形常量
二进制 :由数字0和1组成
八进制: 以0开头并且其后2由0~7组成的数字序列
十进制: 由数字0~9组成的数字序列
十六进制:以0x或者0X开头,并且其后由0~9、A到F组成,如0xAF

2.转义字符

  1. \n 表示换行
  2. \r 表示回车
  3. \b 表示退格符号
  4. \ \ 表示反斜杠字符

2.3、Java中的运算符

1、自增运算符

		int a=1;
		System.out.println(a++);
		1
		int a=1;
		System.out.println(++a);
		2

2、运算符的优先级
在这里插入图片描述

2.4、选择结构语句

		int a=1;
		if(a>0) {
			System.out.println("a大于0");
		}
		
		if(a>0) {
			System.out.println("a大于0");
		}else {
			System.out.println("a小于0");
		}
		
		switch(a) {
		case 0:
			System.out.println("a=0");break;
		case 1:
			System.out.println("a=1");break;
			default:
				System.out.println("你好");
				break;
		}

2.5、循环结构语句

		int a=10;
		while(a>0) {
			System.out.println(a);
			a--;
		}
		
		do {
			System.out.println(a);
			a--;
		}while(a>0);
		
		for(int i=0;i<10;i++) {
			System.out.println(i);
		}

1、循环嵌套
九九乘法表

		for(int i=1;i<10;i++) {
			for(int j=1;j<=i;j++) {
				System.out.print(j+"*"+i+"="+i*j+" ");

			}
			System.out.println("");
		}

2.6、数组

在这里插入图片描述
在这里插入图片描述

1、数组实现冒泡排序

		//冒泡排序
		int a[]= {5,7,4,5,2,8,11};
		//外层循环比较次数
		for(int i=1;i<a.length;i++) {
			//内层循环比较每次比较的个数
			for(int j=0;j<a.length-i;j++) {
				if(a[j]>a[j+1]) {
					//两个相邻元素交换
					int temp=a[j+1];
					a[j+1]=a[j];
					a[j]=temp;
				}
			}
		}

2、二维数组
定义二维数组的三种方式

		int arr[][]=new int[3][4];
		int arr2[][]=new int [3][];
		int arr3[][]= {{1,2},{3,4},{4,5,6}};

三、面向对象(上)

3.1、Java中的类与对象

1、类与对象
是对某一事物的抽象描述
对象用于表示现实中该类事物的个体
object 类是所有类的父类

2、对象的创建和使用
类名 对象名 = new 类名 ()
在这里插入图片描述

成员变量的初始值

成员变量类型初始值
byte0
short0
lint0
long0
float0.0
double0.0
char空字符
booleanflase
引用数据类型null

3、访问控制符
private(当前类访问级别)
default (包访问级别)
protected (子类访问级别)
public (公共访问级别)

3.2、类的封装

1、封装
如果外界想要访问私有属性,需要提供一些public修饰的公有方法,获取属性值getXxx(),设置属性值setXxx()
2、重载
方法名相同参数个数和类型相同
3、递归
自己调用自己的方法

3.3、构造方法

作用:
实例化对象的同时为为对象的属性赋值
实例化对象的同时被调用

定义:
1.方法名和类名相同
2.无返回值
3.一般设为公共
4.如果没有构造方法,系统会生成一个无参构造方法

3.4、this关键字

定义:
1.this调用成员变量解决局部变量名称冲突问题
2.通过this关键字调用成员方法
3.通过this关键字调用构造方法

注意:
1.只能在构造方法中调用使用this调用其他的构造方法,不能在成员方法中使用
2.在构造方法中,使用this调用构造方法的语句必须使该方法的第一条执行语句,并且只能出现一次
3.不能在两个构造方法中使用this相互调用

3.5、static关键字

定义:
1.修饰类的成员,成员变量,成员方法,代码块
2.实例化对象后,系统才会为每个对象分配空间
3.可以被一个类所有的实例化共享
4.static关键字只能修饰成员变量不能修饰局部变量

四、面向对象(下)

4.1、 类的继承

1、继承
关键字 extends
目的:为了实现代码的复用
注意:
1.类只支持单继承,不允许多继承,也就是一个类只能有一个父类
2.多个类可以继承同一个父类
3.一个类的父类可以继承另外的父类
2、重写
1.子类重写的方法要和父类被重写的方法具有相同的方法名、参数列表、返回值类型
2.子类重写父类时,不能使用比父类中被重写的方法更严格的访问权限
3、super关键字
1.调用父类的成员变量和成员方法
2.调用父类的构造方法
4、final关键字
1.final修饰的类不能被继承
2.final修饰的方法不能被继承
3.final修饰的成员变量是常量,只能赋值一次

4.2、 抽象类和接口

1、抽象类
关键字 abstract
1.包含抽象方法的类必须定义为抽象类
2.抽象类可以不包含任何抽象方法
3.抽象类不可被实例化,抽象类中可能包含抽象方法
2、接口
接口关键字 interface
实现接口关键字 implements
3、异常
在这里插入图片描述

4.3、 Java常用类

1、String类常见操作

		String str="abcdefg";
		System.out.println(str.length());
		System.out.println(str.charAt(0));
		System.out.println(str.indexOf('a'));
		System.out.println(str.lastIndexOf('f'));
		System.out.println(str.indexOf("de"));
		//从第三个字符截取到末尾
		System.out.println(str.substring(3));	
		//7 a 0 5 3 defg

2、常量池

		//存在同一个常量池中,同一个常量对象
		String a="abc";
		String b="abc";
		//两个不同的对象,地址不同,值相同
		String c=new String("abc");
		String d=new String("abc");
		StringBuffer s=new StringBuffer("abc");
		StringBuffer e=new StringBuffer("abc");
		
		System.out.println(a==b);
		System.out.println(a.equals(b));
		
		System.out.println(c==d);
		System.out.println(c.equals(d));
		
		System.out.println(a==c);
		System.out.println(a.equals(c));
		System.out.println(s==e);
		System.out.println(s.equals(e));
		//true true false true false true false false

五、集合

有序不是排序,是输入顺序是否与输出顺序一致
set无序不能被foreach遍历
ArrayList中add()方法返回值为boolean类型

在这里插入图片描述
在这里插入图片描述

5.1、Iterator遍历

        ArrayList a=new ArrayList();
        a.add("hello1");
        a.add("hello2");
        a.add("hello3");
        java.util.Iterator i=a.iterator();
        while (i.hasNext()){
            Object o=i.next();
            System.out.println(o);
        }

5.2、foreach遍历

        ArrayList a=new ArrayList();
        a.add("hello1");
        a.add("hello2");
        a.add("hello3");
        for (Object o:a) {
            System.out.println(o);
        }

六、I/O流

在这里插入图片描述

6.1、字节流概述

1、文件写入数据

public class OutputStream {
	public static void main(String[] args) throws Exception {
		//创建一个文件字节流来输出文件
		FileOutputStream out=new FileOutputStream("d:/1.txt");
		//定义一个字符穿
		String a="hello";
		//将字符串转换为字节数组写入
		out.write(a.getBytes());
		out.close();
	}
}

2、文件读取数据

	public static void main(String[] args) throws Exception {
		//创建一个文件字节流来存储文件
		FileInputStream in=new FileInputStream("d:/1.txt");
		//定义一个int类型变量b
		int b=0;
		//通过循环来读取文件
		while((b=in.read())!=-1) {
			System.out.println(b);
		}
		in.close();
	}

3、文件复制

		FileInputStream in= new FileInputStream("d:/1.txt");
		FileOutputStream out=new FileOutputStream("d:/abc.txt");
		int i=0;
		while((i=in.read())!=-1) {
			out.write(i);
		}
		in.close();
		out.close();

4、字节缓冲流节省时间

		// TODO Auto-generated method stub
		FileInputStream in= new FileInputStream("d:/1.txt");
		FileOutputStream out=new FileOutputStream("d:/abc.txt");
		int i=0;
		byte b[]=new byte[1024];
		//数据读取到b数组中
		while((i=in.read(b))!=-1) {
			//从0读取到i
			out.write(b,0,i);
		}
		in.close();
		out.close();

6.2、字符流概述

1、文件写入数据

		FileWriter fw=new FileWriter("d:/1.txt");
		fw.write("hello world");	
		fw.close();

2、文件读取数据

	public static void main(String[] args) throws Exception {
		FileReader fd=new FileReader("d:/1.txt");
		int len=0;
		while((len=fd.read())!=-1){
			System.out.print((char)len);
		}
		fd.close();
		
	}

七、多线程

7.1、线程

1、线程描述
进程:是重量级的任务,每个进程有自己独立的地址
线程:是轻量级的任务,不能独立运行,运行在进程中
2、Thread类实现多线程

public class MyThread extends Thread{
	
	//创建子线程类有参构造方法
	public MyThread (String name) {
		super(name);
	}
	//重写run方法
	public void run() {
		int i=0;
		while(i<=5) {
			i++;
			System.out.println(Thread.currentThread().getName());
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyThread thread1=new MyThread("thread1");
		thread1.start();
		MyThread thread2=new MyThread("thread2");
		thread2.start();
		
	}
}

3、Runnable接口实现多线程

public class MyTread2 implements Runnable{
	
	public void run() {
		int i=0;
		while(i++<=5) {
			System.out.println(Thread.currentThread().getName());
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyTread2 thread1=new MyTread2();
		Thread thread=new Thread(thread1,"wwww");
		thread.start();
		Thread thread2=new Thread(thread1,"qqqq");
		thread2.start();
	}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微笑伴你而行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值