JAVA 的基础语法、运算符

JAVA 的基础语法

1.JDK JRE JVM

  • JDK:java开发工具包,提供给开发人员编写java程序
  • JRE:java运行环境,源代码由JRE运行
  • JVM:java虚拟机,实现跨平台

注意:JDK包含JRE,使用JDK开发java程序,交给JRE运行,由JVM实现跨平台

2.Java的三种注释

  1. //单行注释
  2. /*
    多行注释
    */
  3. /**
    文档注释
    **/

3.Java的最大优势跨平台性

通过Java语言编写的应用程序在不同的系统平台上都可以运行。
Java语言跨平台原理:
只要在需要运行java应用程序的操作系统上,先安装一个Java虚拟机即可。 由JVM来负责Java程序在该系统中的运行。因为有了JVM,所以同一个Java程序在三个不同的操作系统中都可以执行。这样就实现了Java程序的跨平台性。也称为Java具有良好的可移植性。JAVA语言是跨平台的,而JVM不是跨平台的。应为针对不同的操作系统,JAVA提供了不同的JVM,而各个操作系统的可执行文件是不同的。具体如图所示:

java程序
win版的JVM
Linux版的JVM
mac版的JVM
linux系统
Windows系统
MAC系统

4.Java的第一个helloworld代码

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("helloworld!");
    }
}

5.关键字与标识符

1.关键字就是被java语言赋予特殊含义的单词。

关键字的特点:组成关键的字母都是小写
常见关键字:class,public,static,void …
2.标识符就是给类,接口,方法,变量,常量等起名字时使用的字符序列

标识符的组成规则

  1. 英文的大小写字母
  2. 数字字符
  3. $和_

标识符注意事项:

  1. 不能以数字开头
  2. 不能是java中的关键字
  3. 区分大小写

6.变量

变量在程序执行的过程中,在某个范围内其值可以发生改变的量。
即变量其实是内存中的一小块区域
定义变量是为了用来不断的存放同一类型的常量,并可以重复使用。
变量的定义格式:

数据类型 变量名 = 变量值

1. 内置数据类型

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

byte:

  1. byte 数据类型是8位、有符号的,以二进制补码表示的整数;
  2. 最小值是 -128(-2^7);
  3. 最大值是 127(2^7-1);
  4. 默认值是 0;
  5. byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占 用的空间只有 int 类型的四分之一;
  6. 例子:byte a = 100,byte b = -50。

short:

  1. short 数据类型是 16 位、有符号的以二进制补码表示的整数
  2. 最小值是 -32768(-2^15);
  3. 最大值是 32767(2^15 - 1);
  4. Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
  5. 默认值是 0;
  6. 例子:short s = 1000,short r = -20000。

int:

  1. int 数据类型是32位、有符号的以二进制补码表示的整数;
  2. 最小值是 -2,147,483,648(-2^31);
  3. 最大值是 2,147,483,647(2^31 - 1);
  4. 一般地整型变量默认为 int 类型;
  5. 默认值是 0 ;
  6. 例子:int a = 100000, int b = -200000。

long:

  1. long 数据类型是 64 位、有符号的以二进制补码表示的整数;
  2. 最小值是 -9,223,372,036,854,775,808(-2^63);
  3. 最大值是 9,223,372,036,854,775,807(2^63 -1);
  4. 这种类型主要使用在需要比较大整数的系统上;
  5. 默认值是 0L;
  6. 例子: long a = 100000L,Long b = -200000L。
  7. "L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。

float:

  1. float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
  2. float 在储存大型浮点数组的时候可节省内存空间;
  3. 默认值是 0.0f;
  4. 浮点数不能用来表示精确的值,如货币;
  5. 例子:float f1 = 234.5f。

double:

  1. double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;
  2. 浮点数的默认类型为double类型;
  3. double类型同样不能表示精确的值,如货币;
  4. 默认值是 0.0d;
  5. 例子:double d1 = 123.4。

boolean:

  1. boolean数据类型表示一位的信息;
  2. 只有两个取值:true 和 false;
  3. 这种类型只作为一种标志来记录 true/false 情况;
  4. 默认值是 false;
  5. 例子:boolean one = true。

char:

  1. char类型是一个单一的 16 位 Unicode 字符;
  2. 最小值是 \u0000(即为0);
  3. 最大值是 \uffff(即为65,535);
  4. char 数据类型可以储存任何字符;
  5. 例子:char letter = ‘A’;。

7.数据转换

隐式转换
Java中的默认转换规则

  1. boolean类型不能转换为其他的数据类型
  2. byte,short,char—int—long—float—double
  3. byte,short,char之间不转换,他们参与运算首先转换为int类型

强制转换
强制转换的格式

目标数据类型 变量名=(目标数据类型)(被转换的数据);

  1. 强制转换的注意事项

尽量不要使用强制类型转化,因为可能存在损失精度的问题。
案例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.逻辑运算符

&(并且) , | (或者) , ! (非)
^(异或) , &&(短路与) , ||(短路或)

  1. &逻辑与:有false则false。
  2. |逻辑或:有true则true。
  3. ^逻辑异或:相同为false,不同为true。
  4. !逻辑非:非false则true,非true则false。(特点:偶数个不改变本身。)

&&和&的区别?
最终结果一样,&&效率更高。
&&具有短路效果,左边是false,右边不执行。
||和|的区别?
最终结果一样,&&效率更高。
|| 如果左边是ture,那么右边不执行。

12.位运算符

&(与),|(或),^(异或) , ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)
注意:位运算是直接对二进制补码进行运算,效率更高。

<<:左移 空位补0,被移除的高位丢弃。
:右移 被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,高位补1。

:无符号右移 被移位二进制最高位无论是0或者是1,空缺位都用0补。
结论:

  1. << : 把<<左边的数据乘以2的移动次幂 例如 10<<3 结果 10*2^3=80
  2. : 把>>左边的数据除以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 让代码整齐显示

发布了29 篇原创文章 · 获赞 0 · 访问量 363

猜你喜欢

转载自blog.csdn.net/weixin_45673369/article/details/102525502
今日推荐