黑马程序员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的各种工具命令。javac 和java 就在这个目录 |
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语言是强类型语言,对于每一种数据都给出了明确的数据类型,不同的数据类型也分配了不同的内存空间,所以它们表示的数据大小也是不一样的。
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
整数 | byte | 1Byte | -128~127 |
整数 | short | 2Byte | -32768~32767 |
整数 | int(默认) | 4Byte | -231~231-1 |
整数 | long | 8Byte | -263~263-1 |
浮点数 | float | 4Byte | 负数:-3.402823E+38 ~-1.401298E-45 正数: 1.401298E-45 ~3.402823E+38 |
浮点数 | double(默认) | 8Byte | 负数:-1.797693E+308 到-4.9000000E-324 正数: 4.9000000E-324 到1.797693E+308 |
字符 | char | 2Byte | 0-65535 |
布尔 | boolean | 1Byte | true,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
数据输入
-
导包
import java.util.Scanner;
-
创建对象
Scanner sc = new Scanner(System.in);
sc
为变量名 -
接收数据
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教程学习笔记