JAVA 的基础语法
1.JDK JRE JVM
- JDK:java开发工具包,提供给开发人员编写java程序
- JRE:java运行环境,源代码由JRE运行
- JVM:java虚拟机,实现跨平台
注意:JDK包含JRE,使用JDK开发java程序,交给JRE运行,由JVM实现跨平台
2.Java的三种注释
- //单行注释
- /*
多行注释
*/ - /**
文档注释
**/
3.Java的最大优势跨平台性
通过Java语言编写的应用程序在不同的系统平台上都可以运行。
Java语言跨平台原理:
只要在需要运行java应用程序的操作系统上,先安装一个Java虚拟机即可。 由JVM来负责Java程序在该系统中的运行。因为有了JVM,所以同一个Java程序在三个不同的操作系统中都可以执行。这样就实现了Java程序的跨平台性。也称为Java具有良好的可移植性。JAVA语言是跨平台的,而JVM不是跨平台的。应为针对不同的操作系统,JAVA提供了不同的JVM,而各个操作系统的可执行文件是不同的。具体如图所示:
4.Java的第一个helloworld代码
public class HelloWorld {
public static void main(String[] args) {
System.out.println("helloworld!");
}
}
5.关键字与标识符
1.关键字就是被java语言赋予特殊含义的单词。
关键字的特点:组成关键的字母都是小写
常见关键字:class,public,static,void …
2.标识符就是给类,接口,方法,变量,常量等起名字时使用的字符序列
标识符的组成规则
- 英文的大小写字母
- 数字字符
- $和_
标识符注意事项:
- 不能以数字开头
- 不能是java中的关键字
- 区分大小写
6.变量
变量在程序执行的过程中,在某个范围内其值可以发生改变的量。
即变量其实是内存中的一小块区域
定义变量是为了用来不断的存放同一类型的常量,并可以重复使用。
变量的定义格式:
数据类型 变量名 = 变量值
1. 内置数据类型
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
byte:
- byte 数据类型是8位、有符号的,以二进制补码表示的整数;
- 最小值是 -128(-2^7);
- 最大值是 127(2^7-1);
- 默认值是 0;
- byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占 用的空间只有 int 类型的四分之一;
- 例子:byte a = 100,byte b = -50。
short:
- short 数据类型是 16 位、有符号的以二进制补码表示的整数
- 最小值是 -32768(-2^15);
- 最大值是 32767(2^15 - 1);
- Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
- 默认值是 0;
- 例子:short s = 1000,short r = -20000。
int:
- int 数据类型是32位、有符号的以二进制补码表示的整数;
- 最小值是 -2,147,483,648(-2^31);
- 最大值是 2,147,483,647(2^31 - 1);
- 一般地整型变量默认为 int 类型;
- 默认值是 0 ;
- 例子:int a = 100000, int b = -200000。
long:
- long 数据类型是 64 位、有符号的以二进制补码表示的整数;
- 最小值是 -9,223,372,036,854,775,808(-2^63);
- 最大值是 9,223,372,036,854,775,807(2^63 -1);
- 这种类型主要使用在需要比较大整数的系统上;
- 默认值是 0L;
- 例子: long a = 100000L,Long b = -200000L。
- "L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。
float:
- float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
- float 在储存大型浮点数组的时候可节省内存空间;
- 默认值是 0.0f;
- 浮点数不能用来表示精确的值,如货币;
- 例子:float f1 = 234.5f。
double:
- double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;
- 浮点数的默认类型为double类型;
- double类型同样不能表示精确的值,如货币;
- 默认值是 0.0d;
- 例子:double d1 = 123.4。
boolean:
- boolean数据类型表示一位的信息;
- 只有两个取值:true 和 false;
- 这种类型只作为一种标志来记录 true/false 情况;
- 默认值是 false;
- 例子:boolean one = true。
char:
- char类型是一个单一的 16 位 Unicode 字符;
- 最小值是 \u0000(即为0);
- 最大值是 \uffff(即为65,535);
- char 数据类型可以储存任何字符;
- 例子:char letter = ‘A’;。
7.数据转换
隐式转换
Java中的默认转换规则
- boolean类型不能转换为其他的数据类型
- byte,short,char—int—long—float—double
- byte,short,char之间不转换,他们参与运算首先转换为int类型
强制转换
强制转换的格式
目标数据类型 变量名=(目标数据类型)(被转换的数据);
- 强制转换的注意事项
尽量不要使用强制类型转化,因为可能存在损失精度的问题。
案例1:
class VariableDemo4 {
public static void main(String[] args) {
byte a=10;
byte b=127;
short c=(short)(a+b);
System.out.println(c); //-119
// byte f = 130;
byte f = (byte)130;
System.out.println(f); // -126
}
}
案例2:
class VariableDemo3{
public static void main(String[] args) {
byte a=10;
byte b=20;
//byte c=a+b;
//错误: 不兼容的类型: 从int转换到byte可能会有损失
//自动类型提升:byte short char 在参与数学运算时,会自动提升为 int 类型,如果还有 long float double 参与运算,则会相应的提升为 long float double 类型
//byte short char 他们之间不转换,boolean类型不参与数学运算
long c=1L;
float f=1.1F;
double dd=1.8;
double r=a+b+c+f+dd;
System.out.println(r);
}
}
案例3:
class Demo5{
public static void main(String[] args) {
//byte short char 在参与运算时会提升为 int 类型
byte a=1;
short b=2;
char ch=' ';
int c=a+ch; // a 97 我们字符类型在参与运算时,会提升为int类
//记住'A' 65 'a' 97 '0' 48 'B' 66 '2' 50
System.out.println(c);
}
}
8.运算符(优先级)
运算符的优先级(从高到低)
优先级 | 描述 | 运算符 |
---|---|---|
1 | 括号 | ()、[] |
2 | 正负号 | +、- |
3 | 自增自减,非 | ++、–、! |
4 | 乘除,取余 | *、/、% |
5 | 加减 | +、- |
6 | 移位运算 | <<、>>、>>> |
7 | 大小关系 | >、>=、<、<= |
8 | 相等关系 | ==、!= |
9 | 按位与 | & |
10 | 按位异或 | ^ |
11 | 按位或 | 1 |
12 | 逻辑与 | && |
13 | 逻辑或 | 11 |
14 | 条件运算 | ?: |
15 | 赋值运算 | =、+=、-=、*=、/=、%= |
16 | 位赋值运算 | &=、 |
9.算术运算符++和–-的用法
a:单独使用: 放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
b:参与运算使用:放在操作数的前面,先自增或者自减,然后再参与运算。 放在操作数的后面,先参与运算,再自增或者自减。
案例1:
int a = 10;
int b = 10;
int c = 10;
a = b++;
c = --a;
b = ++a;
a = c--;
答案:
a=9
b=10
c=8
案例2:
class MathYSF{
public static void main(String[] args) {
//混合使用 ++在前先运算后使用 ++在后先使用 后运算
int a = 10;
int b = 10;
int c = 10;
a = b++;//a10 b11
c = --a; //c 9 a9
b = ++a; //b10 a10
a = c--; //a9 c8
System.out.println("a:"+a); //9
System.out.println("b:"+b); //10
System.out.println("c:"+c);// 8
int x = 4;
int y = (x++) + (++x)+(x*10);
System.out.println("x:"+x); //6
System.out.println("y:"+y);// 70
}
}
10.赋值运算符
+= 把左边和右边做加法,然后赋值给左边。
class FZYSF2{
public static void main(String[] args) {
byte a=2;
a+=300;//+= 自动会帮你强制类型转换
System.out.println("a:"+a);
}
}
11.逻辑运算符
&(并且) , | (或者) , ! (非)
^(异或) , &&(短路与) , ||(短路或)
- &逻辑与:有false则false。
- |逻辑或:有true则true。
- ^逻辑异或:相同为false,不同为true。
- !逻辑非:非false则true,非true则false。(特点:偶数个不改变本身。)
&&和&的区别?
最终结果一样,&&效率更高。
&&具有短路效果,左边是false,右边不执行。
||和|的区别?
最终结果一样,&&效率更高。
|| 如果左边是ture,那么右边不执行。
12.位运算符
&(与),|(或),^(异或) , ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)
注意:位运算是直接对二进制补码进行运算,效率更高。
<<:左移 空位补0,被移除的高位丢弃。
:右移 被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,高位补1。:无符号右移 被移位二进制最高位无论是0或者是1,空缺位都用0补。
结论:
- << : 把<<左边的数据乘以2的移动次幂 例如 10<<3 结果 10*2^3=80
- : 把>>左边的数据除以2的移动次幂 例如 40>>3 结果 40/2^3=5
案例:
public class MyDemo {
public static void main(String[] args) {
int a = 3;
int b = 4;
System.out.println(a & b);// &:有0则0
System.out.println(a | b);//|:有1则1
System.out.println(a ^ b); //^:相同则0,不同则1
System.out.println(~3);//
System.out.println(3 >> 2);//正数 右移动丢弃右边两个bit位 高位补2个0 注意负数高位补 1
System.out.println(3 << 2);// 00001100 <<:左移 空位补0,被移除的高位丢弃。
System.out.println(-3>>>2);//不管正负,高位都补0
}
}
13.位异或运算符
^的特点:一个数据被另一个数据位异或两次,该数本身不变。
自己位异或自己是0 8^8 结果是0
案例:
//可以利用这个规律进行两值互换
int a=10;
int b=20;
a=a^b;
b=a^b;
a=a^b;
------------
结果是a=20
b=10
14.三目运算符
三元(三目)运算符的格式
(关系表达式) ? 表达式1 : 表达式2;
int a=(10>20)?30:50; a=50
15.键盘录入的基本格式
步骤:
a:导包格式:
import java.util.Scanner;
位置:在class上面。
b:创建键盘录入对象格式:
Scanner sc = new Scanner(System.in);
c:通过对象获取数据格式:
int x = sc.nextInt();
完整语句:
import java.util.Scanner;//导包
public class text {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请在屏幕上输第一个数字");
int i = sc.nextInt();
System.out.println("请在屏幕上输第二个数字");
int i2= sc.nextInt();
int max=i>i2?i:i2;
System.out.println("这两个数中值比较大的值是 " + max);
/*输出结果:请在屏幕上输第一个数字
5
请在屏幕上输第二个数字
8
这两个数中值比较大的值是 8*/
}
}
16.在使用IDEA软件敲代码的快捷键
快捷键、指令缩写和操作 效果
alt+enter 万能神键(可以补全不规范的代码,并且可以极大节省时间)
alt+ctrl+空格 显示未提示的方法或者关键字
psvm public static void main的缩写
sout System.out.println的缩写
10.fori for语句中i到10的快捷写法
ctrl+d 复制粘贴键
alt+ctrl+l 让代码整齐显示