JAVA (基础语法、变量、运算符)


JAVA 的基础语法

1.JDK JRE JVM

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

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

2.Java的三种注释

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

文档注释是JavaDoc,JavaDoc是一种将注释生成HTML文档的技术,生成的HTML文档类似于Java的API,易读且清晰明了。

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,short,int,long,
float,dable,
boolean,
char
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.数据转换

数据转换规律

  1. 八种基本数据类型中,除boolean类型不能转换,剩下七种类型之间都可以进行转换:
  2. 如果整数型字面量没有超出byte,short,char的取值范围,可以直接将其赋值给byte ,short,char类型的量:
  3. 小容量向大容量转换称为自动类型转换,容量从小到大的排序为:
    byte <~short(char)< int < long < float <double,其中short和char
    都占用两个字节,但是char可以表示更大的正整数:
  4. 大容量转换成小容量,称为强制类型转换,编写时必须添加"强制类型转换符",但运行时可能出现精度损失,谨慎使用:
  5. byte,short,char类型混合运算时,先各自转换成int类型再做运算;
  6. 多种数据类型混合运算,各自先转换成容量最大的那一种再做运算:

自动类型转换

小容量向大容量转换称为自动类型转换,容量从小到大的排序为: byte < short(char) <int < long < float < double, 其中 short 和 char 都占用两个字节,但是 char 可以表示更大的正整数

强制转换

大容量转换成小容量,称为强制类型转换

强制转换的格式

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

  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
        }
    }

位异或运算符

^的特点:一个数据被另一个数据位异或两次,该数本身不变。
自己位异或自己是0 8^8 结果是0
案例:

//可以利用这个规律进行两值互换

int a=10;
int b=20;
a=a^b;
b=a^b;
a=a^b;
------------
结果是a=20
     b=10

13.三目运算符(条件运算符)

三元(三目)运算符的格式

(关系表达式) ? 表达式1 : 表达式2;

int a=(10>20)?30:50; a=50

14.键盘录入的基本格式

步骤:
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*/

    }
}

15.在使用IDEA软件敲代码的快捷键

快捷键、指令缩写和操作 效果
alt+enter 万能神键(可以补全不规范的代码,并且可以极大节省时间)
alt+ctrl+空格 显示未提示的方法或者关键字
psvm public static void main的缩写
sout System.out.println的缩写
10.fori for语句中i到10的快捷写法
ctrl+d 复制粘贴键
alt+ctrl+l 让代码整齐显示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值