黑马程序员Java教程学习笔记

Posted 末 初

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了黑马程序员Java教程学习笔记相关的知识,希望对你有一定的参考价值。

文章目录


黑马程序员Java学习笔记

Java版本

  • Java(5.0):是更新力度很大的一个版本,直接让Java的发展进入了快车道

  • Java(8.0):是公司中生产/开发环境使用的最多的版本

  • Java(11.0):是Java学习者使用的最多的版本

Java语言的跨平台原理

在需要运行Java应用程序的操作系统上,安装一个与操作系统相对应的Java虚拟机(JVM Java Virtual Machine)即可。

JRE和JDK

  • JRE(Java Runtime Environment)

    是Java程序的运行时环境,包含JVM和运行时所需要的核心类库

    只是想要运行一个Java程序,那么只需要安装JRE即可。

  • JDK(Java Development Kit)

    是Java程序开发工具包,包含JRE和开发人员使用的工具。

    其中的开发工具:编译工具(javac.exe)和运行工具(java.exe)

JDK、JRE、JVM的关系如下图:

JDK的下载和安装

Java11 for WIndows: https://www.oracle.com/java/technologies/downloads/#java11-windows

JDK的安装目录

目录名称说明
bin该路径下存放了JDK的各种工具命令。javacjava就在这个目录
conf该路径下存放了JDK的相关配置文件
include该路径下存放了一些平台特定的头文件
jmods该路径下存放了JDK的各种模块
legal该路径下存放了JDK各模块的授权文档
lib该路径下存放了JDK工具的一些补充JAR包
其他其余文件为说明性文档

HelloWorld案例

HelloWorld.java

public class HelloWorld 
	public static void main(String[] args) 
		System.out.println("Hello World");
	

D:\\Java\\mycode>javac HelloWorld.java

D:\\Java\\mycode>java HelloWorld
Hello World

D:\\Java\\mycode>

注释

  • 单行注释
    格式:	//注释信息
    
  • 多行注释
    格式:	
    /*
    注释信息
    注释信息
    */
    
  • 文档注释
    格式:	
    /**
    注释信息
    */
    
/*
	Java程序中最基本的组成单位是类。

	类的定义格式:
	public class 类名 
		
	
	这是我定义的HelloWorld类
*/

public class HelloWorld 
	/*
		这是main方法
		main方法是程序的入口,代码的执行是从main方法开始的
	*/
	public static void main(String[] args) 
		//这是输出语句,""里面的内容是可以改变的
		System.out.println("Hello World");
	

关键字

  • 关键字的字母全部小写
  • 常用的代码编辑器,针对关键字有特殊的颜色标记,非常直观
  • Java的关键字有五十个左右

常量

常量:在程序运行中,其值不可以改变的的量

常量类型说明举例
字符串常量用双引号括起来的内容“HelloWold”,“黑马程序员”
整数常量不带小数的数字666,-88
小数常量带小数的数字13.14,-5.21
字符常量用单引号括起来的内容‘A’,‘0’,‘我’
布尔常量布尔值,表示真假只有两个值:true,false
空常量一个特殊值,空值值是:null
public class ConstantDemo 
	public static void main(String[] args) 
		//字符串常量
		System.out.println("Hello,World");
		System.out.println("黑马程序员");
		System.out.println("-------");

		//整数常量
		System.out.println(666);
		System.out.println(-88);
		System.out.println("-------");

		//小数常量
		System.out.println(13.14);
		System.out.println(-5.21);
		System.out.println("--------");

		//字符常量
		System.out.println('A');
		System.out.println('0');
		System.out.println('我');
		System.out.println("-------");

		//布尔常量
		System.out.println(true);
		System.out.println(false);
		System.out.println("-------");

		//空常量
		//空常量不能直接输出
		//System.out.println(null);
	

D:\\Java\\mycode>javac ConstantDemo.java

D:\\Java\\mycode>java ConstantDemo
Hello,World
黑马程序员
-------
666
-88
-------
13.14
-5.21
--------
A
0
我
-------
true
false
-------

数据类型

Java语言是强类型语言,对于每一种数据都给出了明确的数据类型,不同的数据类型也分配了不同的内存空间,所以它们表示的数据大小也是不一样的。

数据类型关键字内存占用取值范围
整数byte1Byte-128~127
整数short2Byte-32768~32767
整数int(默认)4Byte-231~231-1
整数long8Byte-263~263-1
浮点数float4Byte负数:-3.402823E+38~-1.401298E-45
正数:1.401298E-45~3.402823E+38
浮点数double(默认)8Byte负数:-1.797693E+308-4.9000000E-324
正数:4.9000000E-3241.797693E+308
字符char2Byte0-65535
布尔boolean1Bytetrue,false

说明:E+38表示是乘以10的38次方,同样,E-45表示乘以10的负45次方

标识符

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

《标识符常见命名规定》

小驼峰命名法:针对方法变量

  • 约定一:标识符是一个单词的时候,首字母小写

    例如:name

  • 约定二:标识符由多个单词组成的时候,第一个单词首写字母小写,其他单词首字母大写

    例如:firstName

大驼峰命名法:针对

  • 约定一:标识符是一个单词的时候,首字母大写

    例如:Student

  • 约定二:标识符由多个单词组成的时候,每个单词首写字母大写

    例如:GoodStudent

类型转换

  • 自动类型转换
    把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量
  • 强制类型转换
    把一个表示数据范围大的数值或者变量赋值给另一个表示数据的范围小的变量
    格式:目标数据类型 变量名 = (目标数据类型)值或者变量;
    例子:int k = (int)88.88;
public class ConversionDemo 
	public static void main(String[] args) 
		//自动类型转换
		double d = 10;
		System.out.println(d);

		//定义byte类型的变量
		byte b = 10;
		short s = b;
		int i = b;
		System.out.println(s);
		System.out.println(i);

		//这是不可以的,类型不兼容
		//char c = b;

		//强制类型转换
		int k = (int)88.88;
		System.out.println(k);
	

D:\\Java\\mycode>javac ConversionDemo.java

D:\\Java\\mycode>java ConversionDemo
10.0
10
10
88

运算符

运算符:对常量或者变量进行操作的符号

表达式:用运算符把常量或者变量连接起来符合Java语法的式子就可以称为表达式。

不同的运算符连接的表达式体现的是不同类型的表达式

举例说明:

int a = 10;
int b = 20;
int c = a + b;

+ : 是运算符,并且是算术运算符

a + b : 是表达式,由于+是算术运算符,所以这个表达式叫算术表达式

public class OperatorDemo01 
	public static void main (String[] args) 
		//定义两个变量
		int a = 6;
		int b = 4;

		System.out.println(a + b);
		System.out.println(a - b);
		System.out.println(a * b);
		System.out.println(a / b);
		System.out.println(a % b);
		//除法得到的商,取余得到的是余数

		//整数相除只能得到整数,要想得到小数,必须有浮点数的参与
		System.out.println(6.0 / 4);
	

D:\\Java\\mycode>javac OperatorDemo01.java

D:\\Java\\mycode>java OperatorDemo01
10
2
24
1
2
1.5

字符"+"操作

拿字符在计算机底层对应的数值来进行计算的,即ASCII码

  • A -> 65:A-Z是连续的
  • a -> 97:a-z是连续的
  • 0 -> 48:0-9是连续的

算术表达式中包含多个基本数据类型的值的时候,整个算术表达式的类型自动进行提升

提升规则:

  • byte类型,short类型和char类型将被提升到int类型

  • 整个表达式的类型自动提升到表达式中最高等级操作数同样的类型

    等级顺序:byte->short->char->int->long->float->double

public class OperatorDemo02 
	public static void main (String[] args) 
		//定义两个变量
		int i = 10;
		char c = 'A';//'A'的值是65
		c = 'a';//'a'的值是97
		c = '0';
		System.out.println(i + c);

		//char ch = i + c;
		//char类型会被自动提升为int类型
		int j = i + c;
		System.out.println(j);

		//int k = 10 + 13.14;
		double d = 10 + 13.14;
		System.out.println(d);
	

D:\\Java\\mycode>javac OperatorDemo02.java

D:\\Java\\mycode>java OperatorDemo02
58
58
23.14

字符串"+"操作

  • +操作中出现字符串时,这个+字符串连接符,而不是算术运算。

  • +操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行+操作时,从左到右逐个执行。

  public class OperatorDemo03 
  	public static void main(String[] args) 
  		System.out.println("it" + "heima");
  		System.out.println("itheima" + 666);
  		System.out.println(666 + "itheima");
  		System.out.println("黑马" + 6 + 66);
  		System.out.println(1 + 99 + "年黑马");
  	
  
  D:\\Java\\mycode>javac OperatorDemo03.java
  
  D:\\Java\\mycode>java OperatorDemo03
  itheima
  itheima666
  666itheima
  黑马666
  100年黑马

复制运算符

符号作用说明
=赋值a=10,将10赋值给变量a
+=加后赋值a+=b,将a+b的值给a
-=减后赋值a-=b,将a-b的值给a
*=乘后赋值a*=b,将a*b的值给a
/=除后赋值a/=b,将a/b的商给a
%=取余后赋值a%=b,将a%b的余数给a

注意:扩展的赋值运算符隐含了强制类型转换

自增自减运算符

符号作用说明
++自增变量的值加1
--自减变量的值减1

注意事项:

  • ++--既可以放在变量后边,也可以放在变量的前边

  • 单独使用的时候,++--无论是放在变量前边还是后边,结果都是一样的。

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

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

  • 最常见的用法:单独使用

关系运算符

符号说明
==a==b,判断a和b的值是否相等,成立为true,不成立为false
!=a!=b,判断a和b的值是否不相等,成立为true,不成立为false
>a>b,判断a是否大于b,成立为true,不成立false
>=a>=b,判断a是否大于等于b,成立为true,不成立为false
<a<b,判断a是否小于b,成立为true,不成立为false
<=a<=b,判断a是否小于等于b,成立为true,不成立为false

注意事项:关系运算符的结果都是boolean类型,要么是true,要么是false。

逻辑运算符

符号作用说明
&逻辑与a&b,a和b都是true,结果为true,否则为false
|逻辑或a|b,a和b都是false,结果为false,否则为true
^逻辑异或a^b,a和b的结果不同为true,相同为false
!逻辑非!a,结果和a的结果正好相反

短路逻辑运算符

符号作用说明
&&短路与作用和&相同,但是有短路效果
||短路或作用和|相同,但是有短路效果

注意事项:

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

最常用的逻辑运算符:&&||!

三元运算符

格式:关系表达式?表达式1:表达式2;
范例:a > b ? a : b;

计算规则:
    首先计算关系表达式的值
    如果值为true,表达式1的值就是运算结果
    如果值为false,表达式2的值就是运算结果
public class OperatorDemo 
	public static void main(String[] args) 
		//定义两个变量
		int a = 10;
		int b = 20;

		//获取两个数值当中的较大值
		int max = a > b ? a : b;
		System.out.println("max: " + max);
	

D:\\Java\\mycode>javac OperatorDemo.java

D:\\Java\\mycode>java OperatorDemo
max: 20

案例:两只老虎

public class OperatorDemo 
	public static void main(String[] args) 
		int weight1 = 180;
		int weight2 = 200;

		boolean b = weight1 == weight2 ? true : false;

		System.out.println("b:" + b);
	

D:\\Java\\mycode>javac OperatorDemo.java

D:\\Java\\mycode>java OperatorDemo
b:false

案例:三个和尚

public class OperatorDemo 
	public static void main(String[] args) 
		int height1 = 155;
		int height2 = 165;
		int height3 = 210;

		int tempHeight = height1 > height2 ? height1 : height2;
		int maxHeight = tempHeight > height3 ? tempHeight : height3;

		System.out.println("Max Height: " + maxHeight); 
	

D:\\Java\\mycode>javac OperatorDemo.java

D:\\Java\\mycode>java OperatorDemo
Max Height: 210

数据输入

  1. 导包

    import java.util.Scanner;
    
  2. 创建对象

    Scanner sc = new Scanner(System.in);
    

    sc为变量名

  3. 接收数据

    int i = sc.nextInt();
    
   import java.util.Scanner;
   
   public class ScannerDemo 
   	public static void main(String[] args) 
   		Scanner sc = new Scanner(System.in);
   		int x = sc.nextInt();
   		System.out.println("x: " + x);
   	
   
   D:\\Java\\mycode>javac ScannerDemo.java
   
   D:\\Java\\mycode>java ScannerDemo
   77
   x: 77

案例:三个和尚升级版

import java.util.Scanner;

public class ScannerTest 
	public static void main(String[] args) 
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入第一个和尚的身高:");
		int height1 = sc.nextInt();

		System.out.println("请输入第二个和尚的身高:");
		int height2 = sc.nextInt();

		System.out.println("请输入第三个和尚的身高:");
		int height3 = sc.nextInt();

		int tempHeight = height1 > height2 ? height1 : height2;
		int maxHeight = tempHeight > height3 ? tempHeight : height3;
		
		System.out.println("这三个和尚中身高最高的是:" + maxHeight + "cm");

	

D:\\Java\\mycode>javac ScannerTest.java

D:\\Java\\mycode>java ScannerTest
请输入第一个和尚的身高:
177
请输入第二个和尚的身高:
189
请输入第三个和尚的身高:
176
这三个和尚中身高最高的是:189cm

if…else语句

public class IfDemo 
	public static void main(String[] args) 
		System.out.println("开始");
		int a = 10;
		int b = 20;
		if(a == b) 
			System.out.println("a等于b");
		
		int c = 10;
		if(a == c) 
			System.out.println("a等于c");
		
		System.out.println("结束");
	

D:\\Java\\mycode>javac IfDemo.java

D:\\Java\\mycode>java IfDemo
开始
a等于c
结束
public class IfDemo 
	public static void main(String[] args) 
		System.out.println("开始");
		int a = 10;
		int b = 20;
		if(a > b) 
			System.out.println("a的值大于b");
		else 
			System.out.println("a的值不大于b");
		
		System.out.println("结束");
	

D:\\Java\\mycode>javac IfDemo.java

D:\\Java\\mycode>java IfDemo
开始
a的值不大于b
结束

案例:判断奇偶数

import java.util.Scanner;

public class IfTest 
	public static void main(String[] args) 
		Scanner sc = 黑马程序员Java教程学习笔记

黑马程序员Java教程学习笔记

黑马程序员Java教程学习笔记

黑马程序员Java教程学习笔记

黑马程序员Java教程学习笔记

黑马程序员Java教程学习笔记