JAVA 的基础语法
1.Java语言平台版本
J2SE(Java 2 Platform Standard Edition)标准版
是为开发普通桌面和商务应用程序提供的解决方案该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发
J2ME(Java 2 Platform Micro Edition)小型版
是为开发电子消费产品和嵌入式设备提供的解决方案
J2EE(Java 2 Platform Enterprise Edition)企业版
是为开发企业环境下的应用程序提供的一套解决方案该技术体系中包含的技术如 Servlet、Jsp等,主要针对于Web应用程序开发
- 注意:jdk1.5以后,我们将其更名为: JAVASE , JAVAME , JAVAEE
2.JDK JRE JVM
JDK:java开发工具包,提供给开发人员编写java程序
JRE:java运行环境,源代码由JRE运行
JVM:java虚拟机,实现跨平台
- 注意:JDK包含JRE,使用JDK开发java程序,交给JRE运行,由JVM实现跨平台
3.Java的三种注释
//单行注释
/*
多行注释
*/
/**
文档注释
*/
4.Java的最大优势跨平台性
通过Java语言编写的应用程序在不同的系统平台上都可以运行。
Java语言跨平台原理:
只要在需要运行java应用程序的操作系统上,先安装一个Java虚拟机即可。 由JVM来负责Java程序在该系统中的运行。因为有了JVM,所以同一个Java程序在三个不同的操作系统中都可以执行。这样就实现了Java程序的跨平台性。也称为Java具有良好的可移植性。JAVA语言是跨平台的,而JVM不是跨平台的。应为针对不同的操作系统,JAVA提供了不同的JVM,而各个操作系统的可执行文件是不同的。具体如图所示:
5.Java的第一个helloworld代码
public class HelloWorld {
public static void main(String[] args) {
System.out.println("helloworld!");
}
}
6.关键字与标识符
1.关键字就是被java语言赋予特殊含义的单词。
- 关键字的特点:组成关键的字母都是小写
- 常见关键字:class,public,static,void …
2.标识符就是给类,接口,方法,变量,常量等起名字时使用的字符序列
-
标识符的组成规则
(1): 英文的大小写字母 (2): 数字字符 (3): $和_
-
标识符注意事项:
(1): 不能以数字开头 (2): 不能是java中的关键字 (3): 区分大小写
7.常量
-
常量就是在程序的执行过程中其值不发生改变的量。
-
Java中常量的分类
(1):字面值常量 (2):自定义常量(面向对象部分讲解)
-
字面值常量的分类
(1): 字符串常量 用双引号括起来的内容 "HelloWorld" ,"Hello" (2): 整数常量 所有整数 12,23 (3): 小数常量 所有小数 12.34,56.78 (4): 字符常量 用单引号括起来的内容 'a','A','0' (注意事项:单引号中只能是单个字母,单个数字,单个符号) (5): 布尔常量 较为特有,只有true和false (6): 空常量 null(数组部分讲解)
- Java针对整数常量提供了4种表现形式
(1):二进制
(2):八进制
(3):十进制
(4):十六进制
8.变量
变量在程序执行的过程中,在某个范围内其值可以发生改变的量。
即变量其实是内存中的一小块区域
定义变量是为了用来不断的存放同一类型的常量,并可以重复使用。
变量的定义格式:
数据类型 变量名 = 变量值
内置数据类型
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';。
9.数据转换
隐式转换
Java中的默认转换规则
(1): boolean类型不能转换为其他的数据类型
(2): byte,short,char—int—long—float—double
(3): 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);
}
}
10.运算符(优先级)
https://blog.csdn.net/gexin0517/article/details/90743324
11.算术运算符++和–的用法
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
}
}
12.赋值运算符
+= 把左边和右边做加法,然后赋值给左边。
class FZYSF2{
public static void main(String[] args) {
byte a=2;
a+=300;//+= 自动会帮你强制类型转换
System.out.println("a:"+a);
}
}
13.逻辑运算符
&(并且) , | (或者) , ! (非)
^(异或) , &&(短路与) , ||(短路或)
&逻辑与:有false则false。
|逻辑或:有true则true。
^逻辑异或:相同为false,不同为true。
!逻辑非:非false则true,非true则false。(特点:偶数个不改变本身。)
&&和&的区别?
最终结果一样,&&效率更高。
&&具有短路效果,左边是false,右边不执行。
||和|的区别?
最终结果一样,&&效率更高。
|| 如果左边是ture,那么右边不执行。
13.位运算符
&(与),|(或),^(异或) , ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)
注意:位运算是直接对二进制补码进行运算,效率更高。
<<:左移 | 空位补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
}
}
14.位异或运算符
^的特点:一个数据被另一个数据位异或两次,该数本身不变。
自己位异或自己是0 8^8 结果是0
案例:
//可以利用这个规律进行两值互换
int a=10;
int b=20;
a=a^b;
b=a^b;
a=a^b;
------------
结果是a=20
b=10
15.三目运算符
三元(三目)运算符的格式
(关系表达式) ? 表达式1 : 表达式2;
int a=(10>20)?30:50; a=50
16.键盘录入的基本格式
步骤:
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*/
}
}
17.在使用IDEA软件敲代码的快捷键
快捷键、指令缩写和操作 | 效果 |
---|---|
alt+enter | 万能神键(可以补全不规范的代码,并且可以极大节省时间) |
alt+ctrl+空格 | 显示未提示的方法或者关键字 |
psvm | public static void main的缩写 |
sout | System.out.println的缩写 |
10.fori | for语句中i到10的快捷写法 |
ctrl+d | 复制粘贴键 |
alt+ctrl+l | 让代码整齐显示 |