JavaSE(适合有基础的小伙伴)

1.1、Java特新和优点

  • 简单性
  • 面向对象
  • 可移植性
  • 高性能
  • 分布式
  • 动态性
  • 多线程
  • 安全性
  • 健壮性

1.2、Java三大版本

  • JavaSE : 标准版 (桌面程序,控制台开发…)
  • JavaME : 嵌入式开发 (手机,小家电…)
  • JavaEE : E企业级开发 (Web端,服务器开发…)

1.3、JDK、JRE、JVM

  • JDK
    jdk是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就无需再单独安装JRE了。其中的开发工具:编译工具(javac.exe),打包工具(jar.exe)等.
  • JRE
    jre包括Java虚拟机和Java程序所需的核心类库等。核心类库主要是java.lang包:包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等.
  • JVM
    jvm是Java虚拟机,Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台。

1.4、JDK的卸载

  1. 删除java的安装目录
  2. 删除环境变量JAVA_HOME
  3. 删除path下关于java的目录
  4. 检查是否删除成功: java -version

1.5、JDK的下载

jdk8官网下载链接

  • 环境变量的配置
    1. 我的电脑–>右键->属性
    2. 环境变量–>JAVA_HOME ->C:\Program Files\Java\jdk1.8.0_191
      在这里插入图片描述
    3. 配置path变量 ->%JAVA_HOME%\bin
      在这里插入图片描述
    4. 检查是否安装成功:java -version
      在这里插入图片描述

1.6、IDEA的下载与安装

2.1、Java的数据类型

  1. 基本类型
    • ①数值类型
      • (1)整数类型
        • byte:占1个字节(-128-127)
        • shot:占2个字节()(-32768-32767)
        • int:占4个字节()(-2147483648-2147483647)
        • long:占8个字节(-9223372036854775808-9223372036854775807)(后面要加L)
      • (2)浮点类型
        • float:占4个字节(后面要加F)
        • double:占8个字节
      • (3)字符类型
        • char:占8个字节
    • ②boolean类型:占1位其值只有true和false两个
  2. 引用类型
    1. 接口
    2. 数组

2.2、字节

  • 位(bit):是计算机内部储存的最小单位
  • 字节(byte):是计算机中数据处理的基本单位,习惯用大写B来表示
  • 1B(byte,字节)=8bit(位)
  • 字符:是计算机中使用的字母、数字和符号
  • 1bit表示1位
  • 1Byte表示一个字节 1B=8b
  • 1024B=1kB
  • 1024KB=1M
  • 1024M=1G

2.3、变量

  • 类变量
  • 实例变量
  • 局部变量
	public class Variable{
			//类变量
			static double salary=2500;
			
			String name;	//实例变量,从属于对象	:
			//如果不自行初始化,这个类型的默认值为	0 	0.0
			//布尔值:默认为flase
			//除了基本类型,其余的默认值都是null
			
		public static void main(String[] args){
				//局部变量(必须声明和初始化值)
				int i=10; 
				
				//实例变量
				Variable variable=new Variable();
				System.out.println(variable.name);

				//类变量
				System.out.println( salary);

		}
		public void add(){
			
		}
	}

2.4、常量

  • 常量:初始化后不能再改变值!不会变动的值
  • 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不予以被改变
  • 常量一般使用大写字符
	public class Demo {
	    //修饰符,不存在先后顺序
	    static final double PI = 3.14;
	    public static void main(String[] args) {
	        System.out.println(PI);
	    }
}

3、Scanner对象

  • 用户获取用户的输入
  • 基本语法:
    Scanner s = new Scanner(System.in);
    
  • 常用方法:
    • next():
      1. 对输入有效字符遇到的空白,next()方法会自动将其去掉
      2. next()不能得到带有空格的字符串
    • nextLine();
      1. nextLine()方法返回的是输入回车之前的所有字符
      2. 可以获取空白
4、循环结构练习题
  1. 计算0到100之间的奇数和偶数的和
	public class Demo {
	    public static void main(String[] args) {
	        int oddSum=0;
	        int evenSum=0;
	
	        for (int i = 0; i <=100; i++) {
	            if (i%2!=0){
	                oddSum+=i;
	            }else {
	                evenSum+=i;
	            }
	        }
	        System.out.println("奇数的和:"+oddSum);
	        System.out.println("偶数的和:"+evenSum);
	    }
}
  1. 用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个
	public class Demo {

    public static void main(String[] args) {
        for (int i = 0; i <=1000 ; i++) {
            if (i%5==0){
                System.out.print(i+"\t");
            }
            if (i%(5*3)==0){
                System.out.println();
            }
        }
    }
}
  1. 打印九九乘法表
	public class Demo {
	public static void main(String[] args) {
        for (int j = 1; j <=9; j++) {
            for (int i = 1; i <=j; i++) {
                System.out.print(j+"*"+i+"="+(j*i)+"\t");
            }
            System.out.println();
        }
    }
}
  1. 输出三角形
public class Demo {
	public static void main(String[] args) {
        for (int i = 0; i <=5 ; i++) {
            for (int j = 5; j >=i ; j--) {
                System.out.print(" ");
            }
            for (int j = 0; j <=i; j++) {
                System.out.print("*");
            }
            for (int j = 0; j <i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
4.1、循环结构+方法练习题

要求:

1.写四个方法:加减乘除
2.利用循环+switch进行用户交互
3.传递需要操作的两个数
4.输出结果

public class 计算器 {
    public static void main(String[] args){
        while(true) {
            Scanner scanner = new Scanner(System.in);
            System.out.print("输入q继续:");
            String str = scanner.next();

            if (str.equals("q")) {

                System.out.print("请输入第一个数字");
                float numb1 = scanner.nextFloat();

                System.out.print("请输入运算符号");
                String operator = scanner.next();

                System.out.print("请输入第二个数字");
                float numb2 = scanner.nextFloat();

                switch (operator) {
                    case "+":
                        add(numb1, numb2);
                        break;
                    case "-":
                        subtract(numb1, numb2);
                        break;
                    case "*":
                        multiply(numb1, numb2);
                        break;
                    case "/":
                        divide(numb1, numb2);
                        break;
                }
            } else {
                System.out.println("正在退出!!");
                break;
            }
        }

    }
    public static void add (float a,float b){
        System.out.println(a+"+"+b+"="+(a+b));
    }
    public static void subtract (float a,float b){
        System.out.println(a+"-"+b+"="+(a-b));
    }
    public static void multiply (float a,float b){
        System.out.println(a+"*"+b+"="+a*b);
    }
    public static void divide (float a,float b){
        System.out.println(a+"/"+b+"="+a/b);
    }

}

5、数组的声明创建

  1. 声明数组变量的语法创建
int []  array;
array= new int[10];
  1. 使用new操作符来创建数组
int[] array = new int[10];
  1. 求数组中元素的和
public class ShuZu {
    public static void main(String[] args) {
        int[] array = new int[10];
        int sum=0;
        array[0]=12;
        array[1]=23;

        for (int i = 0; i < array.length; i++) {
            sum+=array[i];
        }
        System.out.println(sum);
    }
}
  1. 数组的长度
array.length
  1. 静态初始化
int [] a={1,2,3,4};
  1. 动态初始化
int[] b =new int[2];
int[0]=12;

5.1、二维数组

  • 二维数组的声明
int[][] array = {{1,2},{2,3},{3,4},{4,5}};
  • 二维数组的遍历
for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                System.out.print(array[i][j]);
            }
            System.out.println();
        }

5.2、数组中的Arrays类常用方法

  • 元素的遍历
int[] a={1,34,23,3,56};
System.out.println(Arrays.toString(a));
  • 数组元素从小到大排序
int[] a={1,34,23,3,56};
Arrays.sort(a);
System.out.println(Arrays.toString(a));

5.3、冒泡排序:时间复杂度为O(n2)

  1. 比较数组中,两个相邻的元素,如果第一个比第二个大,就交换他们的位置
  2. 每一次比较,都会产生一个最大,或者最小的数字
  3. 下一轮则可以少一轮排序
  4. 依次循环,直到结束
public class MaoPao {
    public static void main(String[] args) {
        int [] array={1,45,34,76,123,43};
        int[] sort = sort(array);
        System.out.println(Arrays.toString(sort));
    }
    public static int[] sort(int[] array){
        //临时变量
        int temp=0;
        //外层循环,判断要走多少次
        for (int i = 0; i < array.length; i++) {
            //内层循环,比较两个数,如果第一个数,比第二个数大,则交换位置
            for (int j = 0; j < array.length-1-i; j++) {
                if (array[j+1]<array[j]){
                    temp=array[j];
                    array[j]=array[j+1];
                    array[j+1]=temp;
                }
            }
        }
        return array;
    }
}

6、面向对象

  • 面向对象编程(OOP)
  • 本质:以类的方式组织代码,以对象的组织(封装)数据
  • 抽象
  • 三大特性:
    • 封装
    • 继承
    • 多态
6.1、super
  1. super 调用父类的构造方法,必须在构造方法的第一个
  2. super 必须只能出现在子类的方法或者构造器中
  3. super 和 this 不能同时调用构造方法
6.2、super与this的对比
  1. 代表的对象不同:
    • this:本身调用者这个对象
    • super:代表父类对象的引用
  2. 前提:
    • this:没有继承也可以使用
    • super:只能在继承条件下才可以使用
  3. 构造方法:
    • this():本类的构造
    • super():父类的构造
6.3、多态
  • 即同一方法可以根据发送对象的不同而采用不同的行为方式
  • 一个对象的实际类型是确定的,但可以指向对象的引用类型有很多
  • 多态存在的条件
    • 有继承关系
    • 子类重写父类的方法
    • 父类引用指向子类的对象
  • 注意:多态是方法的多态,属性没有多态性
  • instanceof 类型转换(引用类型)
public class Person {
    public void run(){
        System.out.println("run");
    }
}

public class Student extends Person{
    @Override
    public void run() {
        System.out.println("son");
    }
}


Student s1=new Student();
//Person父类型,可以指向子类,但不能调用子类独有方法
Person s2=new Student();
Object s3=new Student();

s1.run(); //输出son
//对象能执行哪些方法,主要看对象左边的类型
s2.run();//子类重写了父类的方法,执行子类的方法,输出son,若没重写则输出run

6.4、抽象类

  1. 不能new这个抽象类,只能靠子类去实现它:约束!
  2. 抽象类中可以写普通的方法
  3. 抽象方法必须在抽象类中
  4. abstract,抽象方法,只有方法名字,没有方法的实现!
  5. 单继承
  6. 有构造函数
  7. 能定义变量
  8. 可以包含静态方法
public abstract class ChouXiangLei {
    public abstract void doSomeThing();

    public void sum(){
        System.out.println("sum");
    }
}

6.5、接口

  1. 接口中的所有定义其实现都是抽象的 public abstract
  2. 实现了(implements)接口的类就必须要重写其方法
  3. 接口中没有变量,所有定义的属性都是常量 public static final
  4. 可以实现多个接口
  5. 没有构造函数
  6. 不能包含静态方法
public interface JieKou {
    int AGF=99;

    void run(String name);
}

7、异常(Throwable)

  1. Error(错误)

  2. Exception(异常)

    • IOException
    • RuntimeException
      • NullPointerException(空指针异常)
      • ArrayIndexOutOfBoundsException(数组下标越界异常)
      • ClassNotFoundException(找不到类)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值