本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

零基础JAVA——黑马程序员课程笔记

发布于2021-10-05 10:01     阅读(1336)     评论(0)     点赞(9)     收藏(4)


视频地址:点击访问

JAVA语言发展史

JAVA跨平台原理

在这里插入图片描述

JRE和JDK

JRE (Java Runtime Environment)

是Java程序的运行时环境,包含JVM和运行时所需要的核心类库。
我们想要运行一个已有的Java程序, 那么只需安装JRE即可。

JDK (Java Development Kit)

是Java程序开发工具包,包含JRE和开发人员使用的工具。
其中的开发工具:编译工具(javac.exe)和运行工具(java.exe) 。
我们想要开发一个全新的Java程序,那么必须安装JDK。

JDK安装目录

为什么要配置Path环境变量

开发Java程序,需要使用JDK提供的开发工具,而这些工具在JDK的安装目录的bin目录下。
为了在开发Java程序的时候,能够方便的使用javac和java这些命令,我们需要配置Path环境变量。

Java程序开发运行流程

开发Java程序,需要三个步骤:编写程序,编译程序,运行程序

空常量不能直接输出

dos命令

数据类型


变量使用的注意事项:

名字不能重复
变量未赋值,不能使用
long类型的变量定义的时候,为了防止整数过大,后面要加L
float类型的变量定义的时候,为了防止类型不兼容,后面要加F

标识符定义规则

●由数字、字母、下划线( )和美元符($)组成
●不能以数字开头
●不能是关键字
●区分大小写

常见命名约定

小驼峰命名法:方法、变量
●约定1:标识符是一个单词的时候,首字母小写
●范例1:name
●约定2: 标识符由多个单词组成的时候,第一个单词首字母小写,其他单词首字母大写
●范例2: firstName
大驼峰命名法:类
●约定1: 标识符是一个单词的时候,首字母大写
●范例1: Student
●约定2: 标识符由多个单词组成的时候,每个单词的首字母大写
●范例2: GoodStudent

类型转换

自动类型转换

把一个表示数据范围小的数值或者变量赋值给另-个表示数据范围大的变量
范例: doubled = 10;

强制类型转换

把一个表示数据范围大的数值或者变量赋值给另-个表示数据范围小的变量
●格式:目标数据类型变量名= (目标数据类型)值或者变量;
●范例: intk = (int)88.88;

运算符

算术运算符

字符的+操作

package test;

public class test {
    public static void main(String[] args) {
    	int i = 0;
    	char c = 'A';//'A'的值是65
    	System.out.println(i + c);
    }
}

结果:

提升规则:

  • byte类型, short类型和char类型将被提升到int类型
  • 整个表达式的类型自动提升到表达式中最等级操作数同样的类型
  • 等级顺序: bvte. short.char->int-> lona-> float > double

字符串的+操作

package test;

public class test {
    public static void main(String[] args) {
    	System.out.println("hello"+"earth");
    	System.out.println("hello"+ 6666);
    	System.out.println(6666+ "hello");
    	System.out.println("hello"+6+666);
    	System.out.println(6+666+"hello");
    }
}

结果:

赋值运算符


红色的运算符隐含着强制类型转换

自增自减运算符


单独使用

package test;

public class test {
    public static void main(String[] args) {	
    	//单独使用
    	int i = 1;
    	System.out.println("i="+i);
    	
    	i++;
    	System.out.println("i="+i);
    	
    	++i;
    	System.out.println("i="+i);
    }
}

结果:

参与操作使用

package test;

public class test {
    public static void main(String[] args) {	
    	int i = 1;
    	System.out.println("i="+i);
    	//参与操作使用
    	int j = i++;
    	System.out.println("i="+i);
    	System.out.println("j="+j);    	
    }
}

结果:

package test;

public class test {
    public static void main(String[] args) {	
    	int i = 1;
    	System.out.println("i="+i);
    	//参与操作使用
    	int j = ++i;
    	System.out.println("i="+i);
    	System.out.println("j="+j);    	
    }
}

结果:

  • 参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者–参与操作的时候,如果放在变量的前边,先拿变量做++或者–,后拿变量参与操作。

关系运算符

逻辑运算符

短路逻辑运算符

区别:



注意事项:
逻辑与&,无论左边真假,右边都要执行。
短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行。
逻辑或|,无论左边真假,右边都要执行。
短路或||,如果左边为假,右边执行;如果左边为真,右边不执行。

三元运算符


计算规则:
首先计算关系表达式的值
如果值为true,表达式1的值就是运算结果如果值为false,表达式2的值就是运算结果

数据输入

Scanner使用的基本步骤

package test;

import java.util.Scanner;

public class test {
    public static void main(String[] args) {	
    	Scanner sc = new Scanner(System.in);
    	int i = sc.nextInt();
    	System.out.println("i="+i);
    	sc.close();//关闭sc接口
    }
}

结果:

流程控制

分支结构

if语句

public class test {
    public static void main(String[] args) {	
 	Scanner sc = new Scanner(System.in);
    	int a = sc.nextInt();
    	if (a % 2 == 0)
    		System.out.println("a是偶数");
    	else
    		System.out.println("a是奇数");
    	sc.close();
    }
}

结果:

switch语句

输入一个数字判断是什么季节

public class test {
    public static void main(String[] args) {	
   	Scanner sc = new Scanner(System.in);
    	int i = sc.nextInt();
    	switch (i) {
    	case 1:
    		System.out.println("春季");
    		break;
    	case 2:
    		System.out.println("春季");
    		break;
    	case 3:
    		System.out.println("春季");
    		break;
    	case 4:
    		System.out.println("夏季");
    		break;
    	case 5:
    		System.out.println("夏季");
    		break;
    	case 6:
    		System.out.println("夏季");
    		break;
    	case 7:
    		System.out.println("秋季");
    		break;
    	case 8:
    		System.out.println("秋季");
    		break;
    	case 9:
    		System.out.println("秋季");
    		break;
    	case 10:
    		System.out.println("冬季");
    		break;
    	case 11:
    		System.out.println("冬季");
    		break;
    	case 12:
    		System.out.println("冬季");
    		break;
    	default:
    		System.out.println("输入不合法");
    		break;
    	}
    	sc.close();
    }
}	

利用case穿透性

//case穿透
public class test {
        public static void main(String[] args) {	
    	Scanner sc = new Scanner(System.in);
    	int i = sc.nextInt();
    	switch (i) {
    	case 1:
    	case 2:
    	case 3:
    		System.out.println("春季");
    		break;
    	case 4:
    	case 5:
    	case 6:
    		System.out.println("夏季");
    		break;    		
    	case 7:
    	case 8:
    	case 9:
    		System.out.println("秋季");
    		break;   
    	case 10:
    	case 11:
    	case 12:
    		System.out.println("冬季");
    		break; 
    	default:
    		System.out.println("输入不合法");
    	}
    	sc.close();
    }
}	

循环结构

for语句

经典案例:

public class test {
        public static void main(String[] args) {	
//先找到100——999
    	for(int i = 100;i < 1000;i++) {
    		//判断条件
    		int a = i % 10;
    		int b = i / 10 % 10;
    		int c = i / 100 % 10;
    		if(a*a*a+b*b*b+c*c*c == i) {
    			System.out.println(i);
    		}
    	}
    }
}	

结果:

while语句

在这里插入图片描述


public class test {
        public static void main(String[] args) {
    	int i = 0;
    	double hou = 0.1;
    	while(hou <=8844430) {
    		i++;
    		hou = hou*2;
    	}
    	System.out.println(i);
    }
}	

结果:

三种循环的区别

Random作用和使用步骤

作用:产生一个随机数

猜数字案例

package test;
import java.util.Random;
import java.util.*;


public class test1 {
	public static void main(String []args ) {
		Random r = new Random();
		int num = r.nextInt(100)+1;
		System.out.println(num);
		Scanner sc = new Scanner(System.in);
		while(true) {
		int num1 = sc.nextInt();
		if(num > num1) {
			System.out.println("需要猜大一点");
		}else if(num < num1) {
			System.out.println("需要猜小一点");
		}else {
			System.out.println("猜对了,你真厉害");
			break;
		}
	}
	}
}

结果:

数组

数组定义格式

什么是数组

数组(array)是一种用于存储多个相同类型数据的存储模型

数组定义格式

数组初始化之动态初始化

数组初始化概述

Java中的数组必须先初始化然后才能使用
所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值

数组初始化方式

动态初始化和静态初始化

动态初始化

动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。

  • int:说明数组中元素的类型是int
  • [ ]:说明这是一个数组
  • arr:这是数组的名称
  • new:为数组申请内存空间
  • int:说明数组中元素的类型是int
  • [ ]:说明这是一个数组
  • 3:数组长度,其实就是数组中的元素个数

数组元素访问

public class test1 {
	public static void main(String []args ) {
    	int[] arr = new int [5];
		//输出数组名
		System.out.println(arr);
		//输出数组元素
		System.out.println(arr[0]);
	}
}

结果:

内存分配

Java中内存分配

Java程序在运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

***这里arr指向的是内存地址,这个内存地址是首地址(数组首地址)***

数组初始化之静态初始化

静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度

public class test1 {
	public static void main(String []args ) {
		int[] arr = {1,2,3};
		int[] arr1 = {3,2,1};
		System.out.println(arr);
		System.out.println(arr[0]);
		System.out.println(arr1);
		System.out.println(arr1[0]);
	}
}

结果:

数组操作的两个常见小问题

public class test1 {
	public static void main(String []args ) {
		int[] arr = new int[3];
		System.out.println(arr);
		System.out.println(arr[0]);
		arr = null;
		System.out.println(arr);
		System.out.println(arr[0]);
	}
}

结果:

发生空指针异常,当arr = null时,指针不再有指向。

数组常见操作

遍历

public class test1 {
	public static void main(String []args ) {
		int[] arr = {1,2,3,4,5,6};
		for(int i = 0;i < arr.length;i++) {
			System.out.println(arr[i]);
		}
	}
}

结果:

获取最值

public class test1 {
	public static void main(String []args ) {
//获取最值
		//定义一个数组
		int[] arr = {3,1,2,4};
		//定义存放最大值,令他等于数组第一个元素
		int max = arr [0];
		//循环比较找出真正的最大值
		for(int i = 1;i < arr.length;i++) {
			if(max <= arr[i]) {
				max = arr[i];
			}
		}
		System.out.println(max);
	}
}

结果:

方法

方法概述

什么是方法

方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集
注意:

  • 方法必须先创建才可以使用,该过程称为方法定义
  • 方法创建后并不是直接运行的,需要手动使用后才执行,该过程称为方法调用

方法的定义和调用

方法定义

方法调用

  • 判断输入的数字是否是偶数(在视频讲解的基础上自己稍稍调整的代码)
public class test1 {
	public static void main(String []args ) {
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		//函数调用
		isnumber(a);
		sc.close();
	}
//定义判断是否是偶数的方法
public static void isnumber(int i) {
			if(i % 2 == 0) {
				System.out.println("是偶数");
			}else {
				System.out.println("不是偶数");
			}
		}
}

结果:

  • 判断数组中的最大元素(在视频讲解的基础上自己稍稍调整的代码)
public class test1 {
	public static void main(String []args ) {
		int[] arr = {1,5,2,3,7};
		getmax(arr);
	}
	//获取数组中最大数
	public static void getmax(int i[]) {
		int max = i[0];
		for(int a = 1;a < i.length;a++) {
			if(max <= i[a]) {
				max = i[a];
			}
		}
		System.out.println(max);
	}
}

结果:

带返回值方法的定义和调用

带返回值方法定义

  • 方法定义时return后面的返回值与方法定义上的数据类型要匹配,否则程序将报错
  • 方法的返回值通常会使用变量接收,否则该返回值将无意义

方法的注意事项

方法注意事项

  • 方法不能嵌套定义
  • void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据

方法的通用格式


定义方法时,要做到两个明确

  • 明确返回值类型:主要是明确方法操作完毕之后是否有数据返回,如果没有,写void;如果有,写对应的数据类型明确参数:主要是明确参数的类型和数量
  • 调用方法时
    void类型的方法,直接调用即可
    非void类型的方法,推荐用变量接收调用

随着我的学习更新

原文链接:https://blog.csdn.net/King_ZACC/article/details/119358189



所属网站分类: 技术文章 > 博客

作者:zhqu4399

链接:http://www.javaheidong.com/blog/article/296543/5abe427d2c71d5f94599/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

9 0
收藏该文
已收藏

评论内容:(最多支持255个字符)