Java学习笔记(java基础)

Java 介绍

1995 Java正式命名、1996 Java1.0 正式发布
1999 Java1.2 正式确认了Java语言的发展方向(J2SE, J2EE, J2ME)
2004 Java1.5 正式发布,将发展方向进行更名 (JavaSE, JavaEE, JavaME)
2009 ~ 2010 Oracle 收购了Sun公司,从此Java进入 Oracle 时代
2014 Java8 诞生、Java命名从 1.X 更名为 X
从Java9开始,Oracle公司放弃了传统了版本发布方式,进而采用每间隔半年发布一个大版本
2021 Java17 正式发布,史称 最快的 JDK

Java 发展方向

  • J2SE (Java标准平台): 包含了 Java语言需要的基础
  • J2EE (Java企业级开发平台): 为企业提供一站式解决方案(WEB开发)
  • J2ME (Java移动端): 常用来做 C/S架构 项目开发

JVM , JDK , JRE 名词解释

  • JVM : vm指的是虚拟机,jvm(Java虚拟机),运行Java程序的载体
  • JDK : Java开发工具包 (为Java开发提供的API)
  • JRE : Java运行环境 (为 Java程序的运行提供可靠的运行环境)

Java语言的特点

  • 简单性: java语言在学习上比C++更加简单、摒弃了C++中多继承、指针等复杂特性
  • 面向对象: java是完全面向对象的语言、以类作为最小的单位,非常注重设计
  • 跨平台: java是一门一致性非常强的语言,只需要编译一次、代码可以在任何平台运行,因为 JVM 屏蔽了底层操作系统的差异
  • 编译性:java源代码(人编写的可识别代码)编写后、需要进行一次编译、将源代码编译成字节码而非机器码,运行速度非常快
  • 安全性:java的程序是运行在JVM中的,所以可以在很大程度上防治恶意代码的入侵,很多企业都会优选Java作为开发语言
  • 动态性:Java是一个动态的语言,它的类信息会在JVM加载的时候进行初始化

Java安装

java的编写需要 JDK, java的运行需要 JRE环境, java程序需要在 JVM中运行,所以在操作系统中需要安装Java

安装包的下载

Oracle官网
下载地址: https://download.java.net/openjdk/jdk17/ri/openjdk-17+35_windows-x64_bin.zip
下载的安装包中,只有一个jdk, 那么 jdk 中自身包含 jre
在 jdk 解压到 D:\Program Files\Java

配置环境变量

环境变量是为了让操作系统识别某一个程序而进行的配置

  • JAVA_HOME : 配置 JDK 的安装路径,主要是为了后期学习的Java程序提供服务,例如tomcat, maven等
  • PATH : 配置 Java的 常见命令所在的路径, 目的是为了在命令提示符下可以找到对应的命令
  • CLASSPATH : 配置 Java的类路径(字节码文件),为了执行Java程序的时候找到字节码文件, 通常用 . 表示当前位置
JAVA_HOME : D:\Program Files\Java\jdk-17 
PATH : %JAVA_HOME%\bin
CLASSPATH : . 

%JAVA_HOME%代表引用JAVA_HOME 环境变量的值

计算机(右键) -> 属性 -> 高级系统设置 -> 环境变量

验证是否安装成功

打开命令提示符(WIN + R -> cmd)
输入 javac -version
输入 java -version

Java的第一个应用程序

  • javac : 可以对java源代码进行编译、生成字节码文件, 以 .class结尾
  • java : 可以运行 java应用程序
  • javadoc : 可以生成 java文档

java 入门应用程序

java的最小单位是类, 一个类用 class 关键字 来修饰, class 后面跟 类的名字
{ … } 在 java中表示代码块,用来定义范围, 在 java语言中,推荐 { 写在 类的后面, } 写在一个单独的行中,且和 {所在行的行首字符对齐
源代码的文件名后缀 必须是 .java
通过 javac 命令可以 编译 源代码,生成 字节码文件,后缀是.class
一个 class 修饰的类 ,生成一个 对应的字节码文件
一个 class类 如果想要被执行,则类中必须提供一个主方法
主方法的写法是固定的,不能修改, 在编写主方法的时候,要有缩进,按下一个tab
程序可以通过 System.out.println() 语句来输出内容,语句只能出现在方法中, 且语句必须以 ; 结尾


class Hello {

	public static void main(String[] args) {
		System.out.println("hello world!") ;
	}
}

一个源文件中,如果包含 public 修饰的类,那么源文件的文件名必须和 public 修饰的类的名字保持完全相同
一个源文件中 最多 只能有 一个主类
推荐一个源文件中书写一个类、且该类是 public 修饰的类

标识符的命名规范

  • 在java应用程序中,标识符通常包含 包名, 类名, 方法名, 变量名
  1. 标识符 由 字母、数字、下划线、$ 组成,但不能以 数字开头
  2. 标识符 不能使用 java 关键字
  3. 包名 推荐使用 全部小写、多个单词也不例外
  4. 类名 推荐使用 大驼峰命名法 (每一个单词的首字母均大写)
  5. 方法名/变量名 推荐使用 小驼峰命名法 (首字母小写、其他每个单词的首字母大写)
  6. 标识符在命名的时候,最好做到 望文知意
    1,2是java的语法,3,4,5开发人员的习惯

注释

对代码进行解释、说明、让代码可读性更强

  • //单行注释:对一行代码进行解释说明,通常会写在需要被注释的代码上方,或者右后方
  • /* ... */ 多行注释: 可以同时对多行内容添加注释,一般写在被注释的代码上方
  • /** ... */ 文档注释: 通常可以对 类、方法、属性进行解释说明,用来生成API文档

多行/文档注释不能嵌套多行/文档注释

编译代码

  • javac [options] 源文件

-encoding : 设置源码的编码方式
-d : 设置字节码存储的位置

 以 utf-8 编码对源文件进行编译
javac -encoding utf-8 Hello.java 

运行代码

 从指定的类路径下查找对应的类 
java --class-path <path>  类 

生成 java 文档

javadoc -encoding utf-8 -d .\doc Hello.java 

Java中的数据类型

  • 基本数据类型
  • 引用数据类型

基本数据类型

Java提供了原始的8种数据类型,用来快速处理数据
分别是 byte , short , int , long , float, double, char , boolean
也可以简单的分为 数字类型、 字符类型、 布尔类型
数字类型分为 整数 和 小数
整数包含四种数据类型 byte , short , int , long
byte在存储数据的时候,占用1个字节、1B = 8位(bit)
short在存储数据的时候,占用2个字节 16bit
int在存储数据的时候,占用 4个字节 32bit
long 在存储数据的时候,占用 8个字节 64bit
在计算机中,二进制在表示数字的时候,最高位是符号位 0代表正数,1代表负数
正数的补码和原码相同、负数的补码等于原码取反 + 1
小数包含两种数据类型 float(单精度) , double (双精度)
float 占用 4个字节 、 double 占用 8个字节
char 代表 字符类型 、占用 2个字节, 取值范围 0 ~ 65535
boolean 代表 真、假, 只有两个值 true (真), false (假)
boolean是非常常用的数据类型,一般用来做判断使用

byte的最大值用二进制表示是: 0111 1111 = 2 ^ 7 - 1 = 127
byte的最小值用二进制表示是:1000 0000 = -128

byte 取值范围是 -128 ~ 127
short 的取值范围是 -2^15 ~ 2^15 - 1
int的取值范围是 -2^31 ~ 2^31 - 1
long的取值范围是 -2^63 ~ 2^63 - 1

2 ----> 10 
3 ----> 11
4 ----> 100
5 ----> 101
6 ----> 110
7 ----> 111  ---> 2^0 + 2^1 + 2^2 ---> 2^3 - 1 = 7 
8 ----> 1000

二进制转十进制的算法是 : 1000 ---> 0 * 2^0 + 0 * 2^1 + 0 * 2^2 + 1 * 2^3 = 8 

1000 0000 ---> 取反 ---> 0111 1111 ---> 加1 ---> 1000 0000 ---> -2^7 = -128

变量

变量名是Java中的标识符、遵循标识符的命名规范,采用小驼峰命名法
是计算机中用来存储数据的标识
变量的声明方式语法 : 数据类型 变量名 ;
给变量赋值 : 变量 = 值 ;

局部变量

在方法中声明的变量就是 局部变量

  1. 局部变量 必须 赋初值后才能使用
  2. 局部变量 在 相同作用范围下 不能 重复声明
  3. 局部变量的作用范围是指 从 变量声明开始到离他最近的代码块结束有效

赋值

在 Java中,使用 = 进行赋值运算,先计算 = 右边的内容,在将计算的结果赋值给变量

  • 整数的字面量默认类型是 int
  • 小数的字面量默认类型是 double

类型转换

  • 自动类型转换

字面量赋值给一个变量的时候,如果字面量的值在变量类型的取值范围内,会自动转换类型
从低类型到高类型 会自动类型转换

  • 强制类型转换

从高类型到低类型、需要强制类型转换
强制类型转换语法: (type)val

整数表示法

  • 0B1010 二进制表示法
  • 0134 八进制表示法
  • 0X12 16进制表示法
  • 12 10进制表示法

小数

float 在定义字面量值得时候,主要添加 F/f

字符表示法

 char a = 'a' 
 char a = 97 
 char a = '\u0061'

Java常见的运算符

  • 算术运算符
  • 赋值运算符
  • 一元运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 位移运算符
  • 三元运算

算术运算符

+(加) 、 -(减) 、 *(乘) 、 /(除)、%(求余) 

算术运算规则

两个数字 做 算术运算的时候,满足以下规则

如果两个数中有 double 类型,结果一定是 double 类型
如果两个数中有 float 类型,结果一定是 float 类型
如果两个数中有 long 类型, 结果一定是 long 类型
其他情况 均为 int

赋值运算符

= (赋值)、 += 、 -=、 *= 、 /= 、%=  

赋值运算符(除=) 不会提升变量的数据类型

一元运算符

a++     a--
++a     --a

a++ 或者 ++a 都可以即作为 语句,也可以作为表达式来使用

a++ : 先计算 a++ 表达式的值,表达式的值等于a的值, 再对a自增1
++a : 先对 a 自增1, 在计算 ++a 表达式的值, 表达式的值等于a的值

int a = 5 ; 

int b = (a--) + (--a) + (a--) 

关系运算符

> , >= , < , <=  , == , !=

关系运算符是一个表达式、返回的结果是 boolean 类型
关系运算符常用来做条件判断
6 > a > 3 (语法错误的), a > 3, a < 6

逻辑运算符

&& (逻辑与) ,  || (逻辑或) ,  !(逻辑非) 

& (逻辑与) ,   | (逻辑或)

逻辑运算符是一个表达式、返回的结果是 boolean 类型
逻辑运算符常用来做条件判断
a > 3 && a < 6 (正确写法)

&&|| 会产生短路现象, &| 不会产生短路

&& :一假即假, 当第一个表达式为假的时候,那么第二个表达式不参与运算
|| : 一真即真, 当第一个表达式为真的时候,那么第二个表达式不参与运算
通常推荐使用 &&||

位运算符

位运算只能应用于整数类型
主要是通过二进制进行运算的
位运算的运算速度是最高效的

& (位与) , | (位或) ,  ~ (位非) ,  ^ (异或)

在位运算中,我们可以简单的把 1 理解为 true , 0 理解为 假
& : 相同位 如果有 0 ,结果为 0 ,否则 为 1
| : 相同位 如果有 1 ,结果为 1 ,否则 为 0
^ : 相同位 不同结果为 1 , 否则 为 0
~ : 按位取反,原来是 1 变为 0 ,原来是 0 变为 1

位移运算符

位移运算只能应用于整数类型
主要是通过二进制进行运算的
位移运算的运算速度是最高效的

<< (左移) , >> (右移),  >>> (无符号右移)

5
0000 0000 0000 0000 0000 0000 0000 0101

-4 
1111 1111 1111 1111 1111 1111 1111 1100

左移: 一个数的二进制向左边移动指定位数、在低位补 0
右移:一个数的二进制向右边移动指定位数、在高位正数补 0,负数补 1
无符号右移: 一个数的二进制向右边移动指定位数、在高位补 0

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值