Java(一):基本语法
Java语言版本迭代概述
1995年发布了jdk1.0
jdk1.5以后更名5.0,1.6(6.0)……
javaEE(J2EE):企业级开发
javaSE(J2SE):核心类库+桌面级应用开发
javaME(J2ME):手机软件开发(废弃掉了,被Android所代替)
Java语言的特点
面向对象的:封装性,继承性,多态性
健壮的:垃圾回收机制(GC),去掉c++的指针
跨平台:一次编译到处运行(依赖于JVM)
jdk jre jvm之间的区别与联系
JDK = JRE + 开发工具集(例如Java编译工具等)
JRE = JVM + Java SE 标准类库
- JDK
Java Development Kit Java开发工具包
它是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境、Java工具(例如:编译工具 javac.exe 打包工具 jar.exe)和Java基础类库。
- JRE
Java Runtime Environment Java运行时环境
它是Sun的产品。运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
- JVM
Java Virtual Machine Java虚拟机
它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,以便在虚拟机上运行。
它是一个虚构出来的计算机,通过咋十几的计算机上仿真模拟各种计算机功能实现的。JVM有自己完善的硬件架构,例如:处理器、堆栈、寄存器等,还具有相应的指令系统。
因为有了JVM,所以同一个Java程序在三个不同操作系统中都可以执行,这样就实现了Java程序的跨平台性,也称Java具有良好的可移植性。
一个简单的helloworld
创建 :创建一个以”.java”结尾的文件,该文件叫做源文件
编译 :javac 源文件名.java - 生成一个或多个字节码文件 (源文件中有几个类就生成几个字节码文件)
运行 :java 字节码文件名 - 运行程序
说明:
1.以.java结尾的文件叫做源文件,以.class文件结尾的叫做字节码文件
2.一个源文件中可以有多个类,类名不可以相同。
3.java严格区分大小写
4.public 修饰的类的类名必须和源文件名称一致
5.一个源文件中可以有多个类,但是只能有一个类可以被public所修饰。
6.每行代码写完后必须以”;”结尾。
关键字与标识符
- java关键字的使用
定义:被java语言赋予了特殊含义,用作专门用途的字符串
特点:关键字中字母都为小写
保留字:java现版本暂未使用但可能以后的版本作为关键字使用
- 标识符的使用
标识符:凡是需要自己命名的地方都叫做标识符
由26个英文字母大小写,0-9,_或$组成
数字不可以开头
不可以使用关键字和保留字,但能包含关键字和保留字
Java中严格区分大小写,长度无限制
标识符不能包含空格
包名:多单词组成时所有字母小写:xxxyyyzzz
类名、接口名:多单词组成时,所单词的首字母大写XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
常量名:所字母都大写,多单词时每个单词用下划线连接XXX_YYY_ZZZ
在起名字时,提高阅读性,要尽量“见名知意”
数据类型
包含基本数据类型与引用数据类型
基本数据类型:数值型(整数类型与浮点类型)、字符型、布尔型
引用数据类型: 类、接口、数组
- 整型 byte(1字节-128~127) short(2字节) int(4字节) long(8字节)
- 浮点型:float(4字节) double(8字节)
- 字符型:char(2字节)
- 布尔类型:boolean(一般忽略大小,只有两个值true和false)
变量间的运算
基本数据类型间的运算(7种不包括boolean)
自动类型提升:小容量的变量和大容量做运算结果,用大容量的变量来接受
byte,short,char->int ->long ->float ->double
注意:
- 容量指的是表数范围
- byte short char 三者之间做运算,三者会先提升为int在做运算,
强制类型转换:自动类型提升的逆过程
小容量的变量和大容量做运算结果,用小容量的变量来接受
格式:强转的类型,
注意:使用强制类型转换可能会损失精度
String(引用数据类型)与基本数据类型(8种)间的运算
- String与基本数据类型只能做连接运算
- String与基本数据类型做运算结果还是String
java常量的默认类型
- java的整型常量默认为int
- java的浮点型常量默认为double
运算符
算术运算符 :+(正) -(负) +(加) -(减) * / %(取模) 前++ 后++ 前– 后– +(连接符)
1 |
|
- 前++后++前–后++区别
后++ :先赋值再运算(自加1)
前++ :先运算(自加1)再赋值
后– :先赋值再运算(自减1)
前– :先运算(自减1)再赋值
- 赋值运算
赋值运算符 : =
扩展赋值运算符 : += -= *= /= %=
int a = 1;
a += 1; //可以理解成a = a + 1 (但是不等同于)
- question
short s = 3;
s = s+2; ① 编译不通过,因为short和int类型的变量做运算,会先自升提升为int类型
s += 2; ② 编译会通过,不会改原来的数据类型
- 计较运算符(比较运算的结果为boolean类型)
== | 相等于 | 3==4 | false |
---|---|---|---|
!= | 不等于 | 3!=4 | true |
< | 小于 | 3<4 | ture |
> | 大于 | 3>4 | false |
<= | 小于等于 | 3<=4 | false |
>= | 大于等于 | 3>=4 | False |
- 逻辑运算符
& | 逻辑与 |
---|---|
&& | 短路与 |
| | 逻辑或 |
|| | 短路或 |
! | 逻辑非 |
^ | 逻辑异或 |
&和&& : 两边同时为true结果才为true
|和|| : 两边只要有true结果就为true
! : 取反
^ : 相同(运算符两边的boolean类型的值)为false,不同为true
1.逻辑运算符是对boolean类型的值进行运算的
2.逻辑运算符的结果为boolean类型
- 面试题
&和&&的区别?(&和&& : 两边同时为true结果才为true)
&和&& 左边的式子结果为true的时候,右边的式子都执行.(因为判断不出结果)
&左边的式子结果为false时右边的式子仍然执行。
&&左边的式子结果为false时右边的式子不再执行(因为根据左边的值就能判断出结果)。
|和||的区别?(|和|| :两边只要有true结果就为true )
|和|| 左边的式子结果为false的时候,右边的式子都执行.(因为判断不出结果)
|左边的式子结果为true时右边的式子仍然执行。
||左边的式子结果为true时右边的式子不再执行(因为根据左边的值就能判断出结果)。
三元运算符
格式:(条件表达式)表达式1:表达式2;
说明:
1.条件表达式的结果只能为boolean类型
2.如果条件表达式的结果为true则执行表达式1,如果条件表达式的结果为false则执行表达式2
3.表达式1和表达式2的类型必须一样。
如果表达式1和表达式2可以进行自动类型提升那么也可以。
例 :double d = (a > b)? 100 : 12.3;
4.三元运算符可以嵌套使用,但是不建议
5.三元运算符可以被if所替换。但是反之不成立。如果两者都可以使用的情况下,
建议使用三元运算符效率高一些。
1 |
|
进制
二进制:0,1 ,满2进1.以0b或0B开头。
十进制:0-9 ,满10进1.
八进制:0-7 ,满8进1. 以数字0开头表示。
十六进制:0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。
如:0x21AF +1= 0X21B0
- 转换
二进制 -> 十进制
1011 => 2的0次方 + 2的1次方 + 2的3次方
十进制 -> 二进制
除2取余数。最后将余数倒过来。
二进制 -> 八进制 二进制 -> 十六进制
位运算符
<< 左移 : 在一定的范围内,原来的数乘以2
>> 右移 : 在一定的范围内,原来的数除以2
- 两者的区别
>> 右移:正数的话最高位用0补,负数的话最高位用1补
>>> 无符号右移 :无论是正数还是负数最高位都是用0补
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!