javase笔记day1

环境配置

JAVA_HOME=C:\Program Files\Java\jdk1.8.0_73
PATH=....;%JAVA_HOME%/bin

JDK、JRE、JVM关系

  • JDK(Java Development Kit)

    Java开发编译工具,包含开发Java程序的所有工具,如javac和java等,JDK里包含JRE。

  • JRE

    Java运行环境,如果要运行Java程序,就需要JRE的支持,JRE里包含JVM。

  • Java虚拟机(Java Virtual Machine)

    简称JVM,它是运行所有Java程序的虚拟计算机,好比是模拟器。(程序是运行在jvm中的)

​ JVM是Java语言的运行环境,也是Java 最具吸引力的特性之一。JVM用于读取并处理编译过的与平台无关的字节码(class)文件,从而实现Java的可 移植性(跨平台)。

注意的是Java虚拟机(JVM)是不跨平台的。也就是说在Win下得装Win版的JVM,在Linux下装Linux版的JVM。

执行流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-09pui8Fx-1658906794804)(assets/1625585018820.png)]

计算机常用快捷键

ctrl + c

ctrl + v

ctrl + s

ctrl + z

ctrl + x

ctrl + a

win + e

win + r

alt + tab

Eclipse常用快捷键

//main + alt + / + enter 快速创建main方法

//syso + alt + / + enter 快速编写打印方法

//shift + alt + a 打开或者取消多行编辑

//ctrl + alt + ↓复制一行并且插入下一行

//ctrl + alt + ↑复制一行并且插入上一行

//ctrl + d 删除所在行

标示符

用来组成代码的符号,比如:类名,方法名,变量名等。在编程时为了增强程序阅读性,定义的名称一定要用有意义,这些名称称为标识符。

注意点

  • 由字母、数字、下划线(_)、$组成,但不能以数字开头。

  • 大小写敏感。

  • 不能使用关键字、保留字。

  • 不建议Java API里的类名作为自己的类名。

使用一个非关键字和保留字的有意义的英文单词,不起非主流的名字。

数据类型

分类

  • 基本数据类型

    • 整型

      • byte
      • short
      • int
      • long
    • 浮点型

      • float
      • double
    • 字符

      • char
  • 在JVM中采用的unicode映射表

    • 本质还是整数
  • 最大能标示2个符号字节【0到65535】

  • boolean

  • 引用数据类型(对象类型)

类型转换

种类

  • 自动
  • 强制

溢出问题

TODO

数组

含义

相同数据类型的集合

一维数组

语法

  • 类型 [] 名称 = {value1,…,valueN}
  • 类型 [] 名称 =new 类型[] {value1,…,valueN}
  • 类型 [] 名称 = new 类型[size];
  • 类型 [] 名称;

二维数组

含义

一维数组的每个元素又是一个一维数组

定义

  • 类型 [] [] 名称 = {{v1,…,vn},{v1,…,vn},{v1,…,vn},…};
  • 类型 [] [] 名称 = new 类型[] []{{v1,…,vn},{v1,…,vn},{v1,…,vn},…};
  • 类型 [] [] 名称 = new 类型[size1] [size2]; //size1必写,size2不是必须的
  • 类型 [] [] 名称;

可变参数

语法

用在方法的参数中,本质还是一个数组

要求

  • 可变参数只能是方法参数中的最后一个参数
  • 一个方法中最多只能有一个可变参数

案例

public class _02ArrayMethod {
	
	public static void main(String ... args) {
		//本质传递的是一个空数组
		say();
		
		say("first");
		
		say("first","second");
	}
	
	public static void say(String ... content ){
		System.out.println(Arrays.toString(content));
	}
}

Arrays

含义

JDK中提供用于操作数据的一个工具类

常用方法

  • sort
  • toString
  • copyOf
  • binarySearch

案例

public class _04Arrays {
	public static void main(String[] args) {
		int [] ages = {1,2,3,6,4};
		
		//Arrays.toString(ages);
		
		//冒泡排序  选择排序
		
		//折半查找
		
		//排序
		Arrays.sort(ages);
		
		//[1, 2, 3, 4, 6]
		//System.out.println(Arrays.toString(ages));
		
		//折半查找
		int index = Arrays.binarySearch(ages, 4);
		
		System.out.println(index);
		
	
		//如果长度不够的时候,使用的是元素类型的默认值来填充
		int temp [] = Arrays.copyOf(ages, 6);
		System.out.println(Arrays.toString(temp));
	}
}

String

含义

不可变字符串,本质字符数组来存储。

常用方法

 public class _05String {

	public static void main(String[] args) throws InterruptedException {
		//String
        
        //含义
        //不可变字符串,一旦创建了对象,该对象就不能被修改
        //本质采用字符数组来存储
		   
		//常用方法
         
		String name = "  javaHello  ";
		 
		//获取长度
		System.out.println(name.length());
		
        //转大写
		System.out.println(name.toUpperCase());
        //转小写
		System.out.println(name.toLowerCase());
		
		//去除左右两边的空格
		System.out.println(name.trim());
		
		
		//97对应的字符在该字符串第一次出现的位置
		System.out.println(name.indexOf(97));
		
        //97对应的字符在该字符串最后一次出现的位置
		System.out.println(name.lastIndexOf(97));
		
		//从什么位置开始到最后面进行截取
		String result = name.substring(2);
		System.out.println(result);
		
		//从什么位置开始到什么位置结束进行截取
		result = name.substring(2,6);
		System.out.println(result);
		
		
		//替换
		result = name.replace("java", "android");
		System.out.println(result);
		 
        //切割
		String content = "a,b,c,d";
		System.out.println(Arrays.toString(content.split(",")));
		
		//是否包含子串
		content.contains("a,b");
	}
}

面向过程

含义

每一个功能都使用函数来完成,在完成某一个功能的时候,就挨着调用函数即可

面向对象

含义

顾名思义该思想是站在对象的角度思考问题,我们把多个功能合理的放到不同对象里,强调的是具备某些功能的对象。

优势

  • 面向对象更加符合正常思维
  • 面向对象适用于大型项目开发,方便维护和扩展

注意点

  • 千万不要误解为面向对象一定就优于面向过程的设计

  • 面向对象是基于面向过程的,永远不可能取代面向过程

  • 面向对象的方法,是面向过程的。

含义

是创建对象模板,是抽象的

在面向对象开发中,是现有类再有对象的。

组成

0-N个行为

0-N个特征

语法

修饰符 class 类名{   
    0-N个行为
        
    0-N个特征
}

注意点

  • 类名是合法标示符,建议单词首字母大写

对象

含义

类的具体体现

具体存在的实物

基本操作

  • 创建对象
  • 打印对象
  • 调用对象的方法
  • 修改/获取对象的变量
  • 对象的比较
  • 回收对象
public class User {
	String name;
	int age;
	
	public void say(){
		System.out.println("test");
	}
	
	//入口方法
	public static void main(String[] args) {
		
		//创建对象    new 类名([参数1,...,参数N]);             立即对象【匿名对象】
		//创建对象    类名  对象名 = new 类名([参数1,...,参数N]);  
		
		User zhangsan = new User();
		
		//调用方法  对象.方法名([参数1,...,参数N]);
		zhangsan.say();
		
		//修改成员变量  对象.成员变量=新值;
		zhangsan.age = 10;
		
		//获取成员变量  对象.成员变量;
		System.out.println(zhangsan.age);
		
		//打印对象  本质打印的是对象.toString()结果
		System.out.println(zhangsan);
		
		 
		System.out.println(zhangsan.toString());
		
		//每创建一个对象就在堆中开辟一个新的空间,此时对象名指向该空间。
		//对象的比较
		User ls = new User();
		User ww = new User();
		
		//== 
		   //如果用在基本数据类型中比较的是内容是否一样
		   //如果用在引用数据类型中比较的是内存地址是否一样
		
		System.out.println(ls==ww);
		
		//对象回收
		   //JVM中有个优先级比较低的线程【后台任务】,该线程会回收没有被引用的对象。   GC
		   //当GC回收一个对象的时候会先调用该对象的finalized方法
		
		ls = null;
		
		//手动触发gc工作
		System.gc();
	}
	
	@Override
	protected void finalize() throws Throwable {
		System.out.println("我被回收了。。。");
	}
}

构造器

含义

用来创建对象和初始化对象并返回对象的一种特殊方法

语法

修饰符 类([参数列表]){
    //方法体
}

注意点

  • 创建一个类就会自动有一个默认的构造器,一旦显示给了构造器默认就会失效
  • 构造器的名和类名是一样
  • 没有返回类型
  • 不需要return 任何数据
  • 构造器可以重载

案例

public class Role {
	
	//作用
	   //创建对象并返回对象,以及在创建对象的时候初始化对象的信息
	
	//语法
	
	/*
	   
	 修饰符  类([参数列表]){
	    //方法体
	 }
	 
	 */
	
	
	String content;
	
	
	public Role(){
		
	}
	
    public Role(String name){
    	content = name;
	}
     
	//注意点
	/*
	  
	- 创建一个类就会自动有一个默认的构造器,一旦显示给了构造器默认就会失效
	- 构造器的名和类名是一样
	- 没有返回类型
	- 不需要return 任何数据
	- 构造器可以重载
	
	*/
	  
	public static void main(String[] args) {
		Role one = new Role();
		
		Role two = new Role("test");
		System.out.println(two.content);
	}
}

默认构造器

  • 定义一个类之后自带有一个默认的构造器
  • 没有参数的
  • 范围修饰符和类的是一样
  • 如果显示指定了构造器那么默认的就会失效

方法

含义

完成某一功能代码的集合

定义

修饰符 返回类型 方法名([参数类表]){
    方法体
    [return 对应类型的数据;]
}

案例

public class _08Method {
	
	public static void main(String[] args) {
		
	}
	
	public int cal(int a,int b){
		return a+b;
	}
	
	public void say(){
		System.out.println("test");
	}
}

方法重载

含义

有多个名称相同的方法,但是参数是不一样【类型和个数】,和方法的返回类型是没有关系的。

案列

public class _09MethodOverload {
	public static void main(String[] args) {
		
	}
	
	//参数不一样
	   //类型
	   //数量

	//有多个名称相同的方法,但是参数是不一样
	
	public int cal(int a,int b){
		return a+b;
	}
	
    /*	
    public long cal(int a,int b){
		return a+b;
	}*/
	
	public float cal(float a,float b){
		return a+b;
	}
	
	public int cal(int a,int b,int c){
		return a+b+c;
	}
}

作业

  • 冒泡排序

  • 选择排序

  • 二分查找

  • 练习String、Arrays相关方法

  • 思考面向过程和面向对象的区别

  • 思考构造器

  • 思考类和对象的关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值