Java学习笔记

Java

一种编程语言
一种开发环境
一种应用环境
一种部署环境

Java主要技术分支

JavaSE[J2SE]:Java标准版,主要用于桌面应用或者局域网应用开发
Java语言核心类:数据库连接,接口定义,输入/输出和网络编程
JavaEE[J2EE]:Java企业版,主要用于企业级电子商务应用开发
包含JavaSE所有类,并且包含用于开发区企业级应用的类,如EJB、Servelet、JSP、XML……J2EE 目前应成为开发电子商务应用的事实标准
JavaME[J2ME]:Java精简版,主要用于受限环境开发
Android所替代

Java的三种核心机制

Java虚拟机JVM

JVM创造了一个内部运行时系统(runtime system来执行Java代码,包括:加载.class字节码文件、管理内存、执行垃圾收集)
	Java运行时环境JRE
	Java不能直接操作内存,没有地址和指针的概念。但是提供了GC机制
	
Java程序并不是在本机操作系统上直接运行,而是通过Java虚拟机向本机操作系统进行解释来运行。这就是说,任何安装有Java虚拟机的计算机系统都可以运行Java程序,而不论最初开发应用程序的是何种计算机系统

Java虚拟机的建立需要针对不同的软硬件平台做专门的实现,既要考虑处理器的型号,也要考虑操作系统的种类

JDK包含JVM和其他工具,以及所有的API和相关文件
	JDK:Java开发工具箱,例如Java解释器和javac编译器实际上都是Java开发工具
	JVM:Java虚拟机,具体变成是按照虚拟机为目标进行编程,不在意具体软硬件平台的区别,这是Java跨平台的依据
	JRE:Java运行时环境,提供系统支持

垃圾收集机制(Garbage Collection)

Java编程语言解除了程序员取消分配存储器的责任,它可提供一种系统级线程以跟踪每一存储器的分配情况。在Java虚拟机的空闲周期,垃圾手机线程检查并释放哪些可被释放的存储器

不再使用内存空间回收——垃圾回收

在C/C++等语言中,由程序员负责回收无用内存。Java语言消除了程序员回收无用内存空间的责任,它提供了一种系统级线程跟踪存储空间的分配情况,并在JVM的空闲时检查并释放那些可被释放的存储空间

垃圾收集在Java程序原型过程中自动运行,程序员无法精确控制和干预

其中参数配置实际上就是虚拟机优化的一个很重要的点

代码安全性检测(Code Security)

Java代码的目标运行环境在于网络,Java以牺牲执行性能为代价换取了高安全性

在运行时,执行机器只是将.class类文件通过交互后使用,一般情况下是看不到它的源代码.java,如果想要看到.java源程序,就要通过专用反编译工具才能看到。这就体现了Java在运行环境中相对其他语言来说,加强了代码的安全性

Java语言

一种面向对象的语言,编写程序的开始就是定义类的开始
一种平台无关的语言,必须程序运行的解释环境
一种健壮的语言,吸收了C/C++语言的优点,但是去掉了影响程序健壮性的部分,例如指针、内存的申请与释放等
典型的应用场景:互联网环境

Java是一种先编译后解释执行型的编程语言

javac Hello.java[源代码文件名称]编译,将源代码转换为虚拟机可以识别的中间性质语言ML,一般生成一个同名的后缀为class的文件(二进制文件、字节码文件),这里就是跨平台的原理

java Hello[类名称,就是源代码中class关键字后面所跟的名称]一般是解释执行字节码文件

Java 完全面向对象的编程语言,编写程序都是从类开始写起

①文件名必须与类名(public class,实际上一个文件可以定义无数多个class,但是只能由一个public class)取成一致,且二者的大小写要一致
②对于一个应用程序来说,必须且只能有一个main()方法。该方法标志着执行应用程序的起始点
③关键字public表明所有的类都可以调用该方法,
	关键字static表明该方法是一个静态方法(可以通过“类名.方法名”的形式直接进行调用)
	关键字void表示main()方法无返回值
④Java程序中的每条语句都要以分号“;”结束(包括以后程序中出现的类型说明等)

标识符

在Java编程语言中,标识符是赋予变量、类和方法的名称。

变量、函数、类和对象的名称都是标识符,程序员需要标识和使用的东西都需要标识符。

①标识符可由字母(Unicode编码字符集)、下划线_、美元符号$和数字组成,但数字不能做开头。
②标识符区分大小写,没有长度限制,可以为标识符取任意长度的名字,一般要求见名知意。例如:true、false、null为小写。
③标识符不允许使用保留字(goto const)和关键字(public class static……)
④Java语言中的保留字均用小写字母表示。

编码规范(建议性规则)

类名和接口(使用名词)首字母大写,大写字母分词
	例如用户名称类应该命名为UserName
方法名称(使用动词)首字母小写,大写字母分词
	例如干饭 ganFan
变量名称首字母小写,大写字母分词
	例如考试成绩 examScore
包名称全小写,使用域名反转的方式定义,用点分开
	例如给延大开发项目,可以定义包名称为edu.yanda,延大的网站域名为yanda.edu
常量全大写,以_分词
	例如SEX_A

语法基础

Java是一种自由格式的语言,可以用任意个空格、制表符、换行符隔开每个词
System.
out.
println
( "Counted " + count + " chars." );
同时也允许将多行代码写在一行上,注意使用分号隔开。所有的语句末尾以分号“;”收尾

常见的编码错误

目前的要求:将所有的程序都必须写在方法内部,不能写在方法外
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210324171238482.png)

​ 使用临时变量,Java要求必须是先定义后使用,必须是先赋初值后使用
在这里插入图片描述

变量

变量是Java程序中的基本存储单元,它的定义包括变量名、变量类型和作用域几个部分
例如int k=100;  其中int是数据类型,k是变量名 m
变量名称:在一个方法内部不允许出现多个同名称的变量
变量类型:Java属于强类型编程语言,变量类型一旦声明,则不能进行修改

常见问题:

变量kk的类型已经声明之后,则不能修改
数据类型可以决定变量所需要的存储空间大小和对应的处理逻辑
作用域是指变量的有效范围,当变量超出所指定的范围,则自动进行垃圾回收。一般是在所在花括号范围内

Java是强类型语言

每个变量都有类型,每个表达式都有类型,而且每种类型都是严格定义的
Java编译器对所有的表达式和参数都要进行类型相容性的检查,以保证类型都是兼容的
任何类型的不匹配都将被报告为错误而不是警告。在编译器完成编译以前,错误必须被改正过来

Java语言数据类型可以分为:基本类型(原生类型)和引用类型

## 基本类型(原生类型)

 基本类型是指不能再分解的数据类型,其数据在函数的调用中是以传值方式工作的

 简单数据类型代表单值,而不是复杂的对象,所以简单类型上不能调用方法

  Java是完全面向对象的,但简单数据类型不是。它类似于其他大多数非面向对象语言中的简单数据类型。这样做的原因是出于效率方面的考虑。在面向对象中引入简单数据类型不会对执行效率产生太多的影响

Java编程语言有八个原始数据类型,可分为4种整型、浮点数(两种)、字符型数据和布尔型数据,它们不会随着计算机类型而变化的,因为Java具有平台无关性,所以不论硬件平台是什么,1B都是8位

整数类型

**byte字节整、short短整、int整、long长整**

计算机中采用的是2进制数的方式存放整数。计算机一般提供了3种方式:原码、反码、补码
首先定义最高位为符号位,0正1负

Java中的数据采用的是补码的存储方式

byte:1B(8b):-128—127
short:2B:-32768到32767
int:4B:-2147483648到2147483647 
long:8B:-9223372036854775808到9223372036854775807 

在这里插入图片描述
十进制整数
如123、-456、0
八进制整数 以0开头
如0123表示十进制数83,-011表示十进制数-9
十六进制整数 以0x/0X开头
如0x123表示十进制291,-0X12表示十进制数-18
二进制整数 以0b/0B开头
例如0b10110010

 整数类缺省为int类型,如在其后有一个字母“l/L”表示一个long值。例如:k=1234567867673L

 数据溢出问题

在这里插入图片描述
浮点数类型

定义:
如果一个数包括小数点或指数部分,或者在数字后带有字母 F 或 f(float)、D 或 d(double),则该数为浮点数

分类:
float单精度、double双精度
float(4B)单精度浮点数 7-8位有效数据   1.4E-45 到 3.4028235E38 
double(8B)双精度浮点数 15-16 有效数据   e308

表示方法:
十进制数形式:由数字和小数点组成,且必须有小数点,如 0.123, 1.23, 123.0
科学计数法形式:如:123e3 或 123E3,其中 e 或 E 之前必须有数字,且 e 或 E 后面的指数必须为整数

*在Java中浮点数无法准确存放,因此浮点数不能进行等值(==/!=)判断(除非使用BigDecimal)
BigDecimal[浮点数]和BigInteger[整数]是系统提供专供专门用于存放理论上无限位数数据的类型,但是一般不建议使用,因为计算时执行效率低下(金融系统中注意浮点数的使用问题)

如何进行浮点数的等值判断?
判断两个数据之间的差值小于某个定值时则认为相等,例如|a-b|<1e-6,其中的1e-6具体值取决于业务规则

常见错误:
	float f1=12.34;
	//语法报错的原因是12.34系统识别为double类型,将double类型赋值给float类型,需要进行窄化操作

字符类型char

Unicode:
Unicode 所定义的国际化字符集能表示迄今为止人类语言的所有字符集,它要求使用 16 位的宽度表示。 没有负数的 char
Unicode 字符的使用对于英语、德语、西班牙语或法语的语言是有些低效,因为这些语言能够被包含在 8 位内。但是为了程序的的可移植性和通用性,付出代价是很有必要的

Java中存放的字符型数据是16位(2B)无符号型数据,它采用的是Unicode编码字符集,不仅仅是ASCII集,其范围为0~65535

使用char类型可以表示单个字符,字符是用单引号括起来的一个字符  'a'
例如:char v1='d';  不能使用双引号,双引号表示字符串,单引号才是字符。引号中只能有一个Unicode字符。

字符a对应的Unicode码值为97

注意事项:

注意事项
\u4e00-\u9fa5只匹配一个中文

布尔类型boolean

	boolean数据类型有两种文字值:true(真)、false(假)
		例如:boolean bb=true;
	在Java编程语言中boolean类型只允许使用boolean值,在整数类型和boolean类型之间无转换计算
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值