JAVA语言基础知识点

java跨平台特性

事先在不同的操作系统上安装jvm将相同的java程序运行在不同的操作系统上,得到相同的结果。
一次编译,到处运行。(.java文件在JVM外部进行编译,把.class文件放入到JVM中来运行)
Java语言是跨平台的,但是JVM不是跨平台的

三大架构

JAVASE=J2SE(基础版):提供桌面服务及小程序
JAVAEE=J2EE(企业版):企业集中式开发
JAVAME=J2ME(小型版):嵌入式开发

搭建java环境

JDK,JRE,JVM

jre=jvm+运行类库-------(提供运行环境)
jdk=jre+kit(开发工具)--------(提供运行环境和开发环境)
JDK:开发工具包
JRE:Java运行环境
JVM:Java虚拟机

配置环境

目的:使javac和java在任何路径下可以执行
JAVA_HOME=jdk安装位置
Path=%JAVA_HOME%\bin

编译运行

.java文件—javac编译—.class文件(字节码文件)
编译命令:javac -xxx.java
.class文件(与类名保持一致)—java运行–结果
运行命令:java -xxx.class
编译时期检测所有代码的语法问题
运行时期按照执行逻辑来完成
eg:进入死循环时,可以编译成功,但运行不成功

注:

1)每一个java文件中可以存放多个类,但是只能有一个公共类,
2)每一个类在编译完成之后都会产生一个class文件,所以class文件名和类名对应

关键字

53个关键字
2个目前没有使用–保留字(goto,const)
具有特殊功能的单词 小写

标识符

1、概念

可以自定义的名称

2、组成范围

各国常见文字、数字、特殊符号(_、$(慎用,内部类常使用))

3、命名规则

不能出现关键字、不能以数字开头。

4、驼峰命名法

类名/接口名—XxxYyyZzz
方法名/变量名—xxxYyyZzz
常量名----XXX_YYY_ZZZ
包名(包是用来区分同名类)
单级—xxx cn
多级—xxx.yyy.zzz tedu.cn.day01

5、见名知意,大小写敏感

注释

1、单行注释 //
2、多行注释/*/
3、文档注释/**/(javadoc可以呈现解释说明的文档)

常量

1、字面值常量

整数常量
小数常量
字符串常量
字符常量
布尔常量
空常量

2、自定义常量

用final修饰数据----最终值 final int a=1;

3、数据的表现形式

二进制(从jdk1.7开始,用ob/OB开头作为标志)
八进制(用0开头作为标志)
十进制
十六进制(用0x开头作为标志)
它们之间可以相互转换
1)十进制转任何进制
将数字除以对应的进制,取余数,将余数倒排
2)任何进制转十进制
从低位开始,按位次乘以对应的进制次幂,然后求和。
3)八进制转二进制
每一位八进制产生三位二进制,如果不足三位,补0。
4)十六进制转二进制
每一位十六进制产生四位二进制,如果不足四位,补0。
5)二进制转八进制
从低位开始,每三位二进制产生一位八进制,如果不足三位补0;
5)二进制转十六进制
从低位开始,每四位二进制产生一位十六进制,如果不足四位补0;

4、有符号的数(原、反、补码)

java中所有数据都是以底层二进制数据的补码形式来表示(数据的操作也是以二进制数据的补码形式来操作)
原码、反码、补码
对于整数而言,原、反、补三码一致
对于负数而言,反码是在原码的基础上最高位不变,其余位1<->0;补码是在反码的基础上加1.

5、小数

十进制的小数转成二进制绝大部分是无限位数

变量

1、概念

程序运行过程中值可以发生改变。
可以存储单个数据的容器

容器

变量 单个数据 所有数据类型
数组 多个数据 所有数据类型

2、基本数据类型

2.1基本数据类型表

基本数据类型(4类8种)占用空间(字节)范围
整数型
byte 字节型(1字节)-128~127(-2`7-2^7-1)
short 短整型(2字节)-32768~32767(-2`15-2^15-1)
int 整型(4字节)-2`31-2^31-1
long 长整型(8字节)-2`63-2^63-1
浮点型
float 单精度(4字节)-e`38-e^38(e是10)
double 双精度(8字节)-e`308-e^308(e是10)
布尔型
true、false(1字节)1字节
字符型
Char(2字节)0~65535

注意

Java中整数默认为int
Java中小数默认为double
Long需要以L/l作为结尾
float需要以f/F作为结尾
Java中的数值型都是有符号的
Java中char类型的数据都是以UTF-16的编码来进行存储
十进制科学计数法:aeb表示a10^b
十六进制科学计数法:0xapb表示a
2^b

2.2类型转换

1)隐式转换
类型提升(默认 从小到大)
byte-short、char-int-long-float-double
byte、short、char无论做任何操作都会类型提升为int类型
①int转byte有损失
②byte-short
把字符转成对应的编码值再赋值给short变量
如果字符转成的编码值大于short的范围就不能正常赋值
③char-int-long-float-double
把数字通过编码转成对应的字符再赋值给char变量
从整型到浮点型进行类型提升时可能会出现精度丢失问题
2)显式转换(强制类型转换)
目标类型 名称=(目标类型)数据; ------(可能会出现一些意想不到的数)
①小数强制类型转成整数时可能会出现舍弃
②大的数字转化为小的类型的时候会产生精度损失

3、引用数据类型

数组[]
类class
接口interface

4、变量操作(数据类型、变量名、变量值)

数据类型 变量名=初始值;
数据类型 变量名;//声明
变量名=初始值;//初始化
①变量在哪定义在哪使用
②变量先定义后使用
③变量必须先赋值后使用

5、变量注意

①在java中初始化进行赋值时如果给定的是整数那么这个整数的类型默认是int类型
②在整数后面加上L/l,此时整数类型指定为了long类型
③在java中初始化进行赋值时如果给定的是小数那么默认是double类型
④在整数后面加上F/f,此时整数类型指定为了float类型
⑤变量的定义分为声明和初始化两个过程
⑥变量在哪定义在哪使用
⑦-0 规定表示对应类型的最小值,-128(特殊认为可以把最高位既当做符号位也当做数值位)

编码、码表

文字转成底层数字—编码 ;文字转成底层数字的规则—码表
ASCII(阿斯克码表 占用一个字节)
—ISO8859-1(西欧码表 占用一个字节)
—BIG5(繁体中文–占用2个字节)
GB2312(简体中文–占用2个字节)
—GBK(国标码 占用2个字节)
—Unicode(编码体系 UTF-8(占用3个字节)
UTF-16(占用2个字节)
UTF-32等等
所有的完整码表默认兼容西欧码表
eg: char c=‘中’;以u8进行编码,底层占用3个字节
char c=‘a’;以u8进行编码,底层占用1个字节
转义字符—‘\t’—制表符空格

键盘输入数据

1、导包 import java.util.Scanner
2、获取Scanner
Scanner sc=new Scanner(System.in);
3、获取数据
int num=sc.nextInt(); -------获取整数
String s=sc.nextLine();-------获取一行转成字符串

运算符与表达式

1、赋值运算符

1)=(把右边的值赋值给左边)
2)扩展赋值运算符(强制类型转换)
+=、-=、*=、/=、%=、&=(按位与等)、|=(按位或等)^=(按位异或等)、>>=(右移等)、<<=(左移等)、>>>=(无符号右移等)
除了=之外,其余的符号要求变量先有值,才能使用
3)java不允许出现连等定义
java允许连等赋值

2、关系运算符

比较(关系)运算符(结果一定是布尔值)
==、>、<、>=、<=、!=

3、逻辑运算符

1)连接左右两边布尔值
2)&、|、^(异或)、!(非)、&&(双与)、||(双或)
3)&&和&的运算规律一致,如果&&左边是false右边不执行—短路效果
||和|的运算规律一致,如果||左边是true右边不执行—短路效果
4)&:遇见false就是false
|:遇见true就是true
^:相同则false,不同则true(吸铁石)
!:取反(false变true,true变false 奇数个非结果取反,偶数个非结果不变)
5)如果||出现在&&左边且||左边布尔值为true,||会把后面的所有内容&&一并短路掉。

4、算术运算符

1)+、-、*、/、%、++、–
2)++、-- 单独运算、参与运算
如果++出现在操作数的后面,先赋值再自加1。
如果++出现在操作数的前面,先自加1再赋值
如果–出现在操作数的后面,先赋值再自减1
如果–出现在操作数的前面,先自减1再赋值
byte/short/char可以参与自增运算,而且结果类型是原来的类型
3)操作+功能:求和、字符串连接符
①:数值类型变量遇到字符型数据,先把字符型数据转成对应的编码值,再进行运算。
②:字符串常量遇到任意类型数据都是拼接。
4)操作-:小数不精确
5)操作/
①:如果参与运算的都是整数结果一定是整数
②:如果参与运算的有小数结果就是小数
③:整数不能除0(出现算术异常)
④:小数可以除0 -----Infinity(正无穷大)、-Infinity(负无穷大)
⑤:0.0/0、0.0/0.0、0/0.0 结果:NaN —Not A Number(和本身都不相等)
6)操作% -----%左边的正负决定了结果的正负
5、位运算符
1)针对二进制数据的补码形式做运算
2)&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、>>(右移)、<<(左 移)、>>>(无符号右移)
3)操作&(遇0则0) 任意整数&1=1是奇数
任意整数&正数—结果一定是正数
4)操作|(遇1则1) 任意整数|0结果还是本身
任意整数|负数—结果一定是负数
5)操作^(相同则0,不同则1)
a ^a =0;
0 ^ a=0;
a^b ^b=a
6)操作~(每一位按位取反)
7)>>(右移):如果是正数,右移几位就要在最左边(高位)补上几个0;如果是 负数,右移几位就要在最左边(高位)补上几个1。
在一定范围内,右移几位就是除以2的几次方
8)<<(左移):无论正负数,左移几位就要在最右边(低位)补上几个0
在一定范围内,左移几位就是乘以2的几次方
正数:右移越移越小,最小到0;
负数:右移越移越大,最大到-1;
9)>>>(无符号右移):无论正负数,右移几位就要在最左边(高位)补上几个0
10)一个整数和另外一个整数按位异或两次结果还是本身
11)两个整数值交换
①:效率高低:按位异或(前提是整数)、求和(前提一般是整数)、中间变量
②:中间变量(容易实现、任意类型数据,但占用内存空间,效率不高),求和(运算复杂),按位异或(计算机底层存储使用二进制补码形式)
6、三目运算符
1)格式
布尔表达式?表达式值1:表达式值2;
2)执行过程
先去计算出布尔表达式的值,如果是true表明执行表达式1返回值1,如果是false执行表达式2返回值2。
3)两个表达式值的类型可以不一样但是要保证两个类型的最大范围在接受值类型范围之内
4)如果没有接受值两个表达式的类型不受限制

运算符优先级

从高到低:() ~ ++ --! * / % + - << >> >>> 关系 逻辑 & | ^ 三元 赋值
算术>关系>逻辑>赋值

注意(易错)

1、java程序的基本组成单元:类
2、java程序中的类不能执行
3、main方法功能:让类执行,所有java程序的入口、被JVM调用
4、类名和.class文件文件名保持一致。
5、公共类保证类名和当前.java文件名保持一致,如果不是公告类没有要求。
6、java文件中可以定义多个类,每个类编译生成对应的.class文件。
7、如果一个.java文件中含有多个区分大小写的类,编译生成的.class名称看第一个类,内容看最后一个类。
8、没有main函数程序可以编译
9、单行注释可以嵌套单行注释,多行注释不可以嵌套多行注释,文档注释可以通过javadoc命令生成解释说明的文档。
10、计算机上所有的数据在底层都是以二进制数据的补码形式来表示。
11、绝大部分的二进制小数是无限位数。
12、所有的完整码表默认兼容西欧码表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值