02_Java基本语法(上)-变量与运算符

Java基本语法(上)-变量与运算符

  • JAVA的基本语法
    • 一丶关键字与保留字
      • 关键字
      • 保留字
    • 二丶标识符
      • 标识符定义:
      • 定义合法标识符规则:
      • Java中的名称命名规范: org.lanqiao
    • 三丶变量
      • 1.变量的概念:
      • 2.变量的作用: 用于在内存中保存数据
      • 3.使用变量注意:
      • 4、声明变量
      • 5、变量的赋值
      • 6、声明和赋值变量
      • 7.变量的分类
        • 按数据类型分类
        • 按变量声明的位置:
    • 四丶基本数据类型(八种)
      • 1.整数类型:byte、short、int、long(整数型数据默认类型是int)
      • 2.浮点型:float、double(浮点型数据默认类型是double)
      • 3.字符类型:char
        • 字符型变量的三种表现形式:
      • 4.布尔型:boolean
      • 5.ASCII 码、Unicode 编码、UTF-8 (了解)
    • 五丶基本数据类型转换
      • 1.自动转化类型:容量小的类型自动转换为容量大的数据类型。
      • 2.强制类型转换:将容量大的类型转换成容量小的类型
      • 3.特殊情况
    • 六丶进制
      • 1.常用进制:
      • 2.二进制的表示形式:原码 反码 补码
      • 3.进制间相互转化
        • 十进制与二进制互转
      • 二进制 八进制互转
      • 二进制 十六进制互转
      • 不同进制的数据的表示:
    • 七丶运算符
      • 1.算数运算符
        • 拓展(了解)
        • 练习
      • 2.赋值运算符:=
      • 3.比较运算
        • 思考1:
      • 4.逻辑运算符
        • 练习:
        • 【面试题】程序输出:
      • 5.位运算符(对计算机二进制码进行运算)
      • 6.三元运算符`关系运算?结果1 : 结果2;`
        • 练习:
      • 7.运算符的优先级

JAVA的基本语法

一丶关键字与保留字

关键字

定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
特点:关键字中所有字母都为小写
官方地址:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html

保留字

Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使 用。自己命名标识符时要避免使用这些保留字 goto 、const

二丶标识符

标识符定义:

Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符 
技巧:凡是自己可以起名字的地方都叫标识符。 

定义合法标识符规则:

1.由26个英文字母大小写,0-9 ,_或 $ 组成
2.数字不可以开头。
3.不可以使用关键字和保留字,但能包含关键字和保留字。
4.Java中严格区分大小写,长度无限制。
5.标识符不能包含空格。

Java中的名称命名规范: org.lanqiao

包名:多单词组成时所有字母都小写:xxxyyyzzz 以公司域名的逆序作为基础包名
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个 单词首字母大写:xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

注意1:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。
注意2:java采用unicode字符集,因此标识符也可以使用汉字声明,但是不允许使用。

三丶变量

1.变量的概念:

内存中的一个存储区域
该区域的数据可以在同一类型范围内不断变化
变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值
变量的作用: 用于在内存中保存数据

02_Java基本语法(上)-变量与运算符_第1张图片

2.变量的作用: 用于在内存中保存数据

3.使用变量注意:

Java中每个变量必须先声明,后使用
使用变量名来访问这块区域的数据
变量的作用域:其定义所在的一对{ }内
变量只有在其作用域内才有效
同一个作用域内,不能定义重名的变量

4、声明变量

语法:<数据类型> <变量名称>
例如:int var; 

5、变量的赋值

 语法:<变量名称> = <值>
 例如:var = 10; 

6、声明和赋值变量

语法: <数据类型> <变量名> = <初始化值>
对于声明在方法内的变量 必须在使用之前至少有一次赋值操作

7.变量的分类

按数据类型分类

02_Java基本语法(上)-变量与运算符_第2张图片
Java是强类型语言 意味着所有的变量都必须有一个明确的类型
类型的作用就是决定变量在内存中分配的空间大小

按变量声明的位置:

局部变量:声明在方法上或方法内的变量
成员变量:声明在类的内部,方法外的变量

区别:
作用范围:
成员变量得作用范围是整个类
局部变量的作用范围是整个方法内
初始化:
局部变量:在使用之前必须有一次赋值操作
成员变量:可以在使用之前不赋值 在于他有默认值
02_Java基本语法(上)-变量与运算符_第3张图片

四丶基本数据类型(八种)

1.整数类型:byte、short、int、long(整数型数据默认类型是int)

02_Java基本语法(上)-变量与运算符_第4张图片

声明整型变量时  针对不同的类型 应进行合理赋值  不要超出期表示范围
对于long类型来说  数据末尾需要加L/l进行标记

2.浮点型:float、double(浮点型数据默认类型是double)

02_Java基本语法(上)-变量与运算符_第5张图片

如果使用float来表示浮点型数据 需要在数据的末尾加F/f

3.字符类型:char

char 型数据用来表示通常意义上“字符”(2字节)
字符在Java中采用单引号 使用双引号引起来的叫字符串
字符就是单个字母 或汉字 或数字

字符型变量的三种表现形式:

字符常量是用单引号(‘ ’)括起来的单个字符。例如:char c1 = 'a'; char c2 = '中'; char c3 = '9';

Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。 例如:char c3 = ‘\n’; // '\n'表示换行符

直接使用 Unicode 值来表示字符型常量:‘\uXXXX’。其中,XXXX代表 一个十六进制整数。如:\u000a 表示 \n。

char类型是可以进行运算的。因为它都对应有Unicode码。
02_Java基本语法(上)-变量与运算符_第6张图片

4.布尔型:boolean

boolean 类型用来判断逻辑条件,一般用于程序流程控制:
if条件控制语句;
while循环控制语句;
do-while循环控制语句;
for循环控制语句;
boolean类型数据只允许取值true和false,无null。
不可以使用0或非 0 的整数替代false和true,这点和C语言不同。
Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达所操作的 boolean 值,在编译之后都使用java虚拟机中的int数据类型来代替:true用1表示,false 用0表示。———《java虚拟机规范 8版》

5.ASCII 码、Unicode 编码、UTF-8 (了解)

将世界上所有的符号都纳入其中 ,每一个符号都给予一个独一 无二的编码

五丶基本数据类型转换

1.自动转化类型:容量小的类型自动转换为容量大的数据类型。

02_Java基本语法(上)-变量与运算符_第7张图片
整型与字符型:byte short char int long

byte short  char  可以直接转换为int
byte short  char 类型之间不能相互转换
int 也可以直接转换为long  需要在数据的结尾添加L

浮点型:float double

    float 也可以直接转换为double

特殊情况:
long --> float
可以转换
float 32位 使用最高位1位表示符号位 8位表示E 23位表示小数
long转换为float 可以自动转换 但是这种转换之后E后的数据具有不确定性 尽量不用
long到double时同样的

2.强制类型转换:将容量大的类型转换成容量小的类型

 语法: 接受类型  变量名  = (将要转换的类型)待转换变量
 {	int a = 1;
    char b;
    b = (char)a;  //强制转换格式
    }

02_Java基本语法(上)-变量与运算符_第8张图片02_Java基本语法(上)-变量与运算符_第9张图片

3.特殊情况

1.整数型转换为浮点型(小到大):

long --> float
可以转换
float 32位  使用最高位1位表示符号位  8位表示E 23位表示小数
long转换为float 可以自动转换 但是这种转换之后E后的数据具有不确定性  ==尽量不用==
long到double时同样的 

2.浮点型转换为整数型(大到小)

   进行转换的时候会舍弃小数位

3.boolean 类型占一个字节的空间

 boolean true/false  --> 1 / 0
理论上一位(bit)就可以保存boolean  但是最小的存储单元时byte (字节)  所以在分配空间时 依然分配一个字节

boolean类型不可以转换为其它的数据类型。
4.String类型:

不属于8中基本类型 属于引用类型
使用方式与基本数据类型一致。

六丶进制

1.常用进制:

	二进制 0 1  
    八进制  0 1 2 3 4 5 6 7 
    十进制  0-9
    十六进制 0-9 A-F

2.二进制的表示形式:原码 反码 补码

(1)正数 的原码 反码 补码都是一样
(2)负数 原码 将一个负数表示程二进制
反码 按位取反 0变1 1 变0
补码 反码+1

为什么要使用原码、反码、补码表示形式呢?(补码运算)
 就在与计算机无法识别符号位  所以在运算中  将符号位也参与运算    只有加法没有减法
( Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;
 当是long类型时,二进制默认占64位,第64位是符号位)——左数第一位符号位

3.进制间相互转化

十进制与二进制互转

02_Java基本语法(上)-变量与运算符_第10张图片

二进制 八进制互转

每三位2进制表示一位8进制

二进制 十六进制互转

每四位二进制表示一位16进制的数

02_Java基本语法(上)-变量与运算符_第11张图片

要将一个十进制的数转换为八进制或十六进制 首先转换为2进制

不同进制的数据的表示:

十进制直接表示  
二进制直接使用01表示
八进制表示的时候一般在数据的前边加0   014
十六进制表示的时候一般在前边加上0x 表示是十六进制表示  0xC

练习:
System.out.println(bb1);输出时 所有的整数都按照int类型输出

02_Java基本语法(上)-变量与运算符_第12张图片

七丶运算符

包括:
算数运算符
逻辑运算符
赋值运算符
关系运算符
位运算
三元运算符

1.算数运算符

02_Java基本语法(上)-变量与运算符_第13张图片

算数运算中  byte  short char  int  运算的结果都是int类型
运算中如果有long类型存在 则结果long类型
在整数类型及char类型做运算的时候 如果操作数如果时byte short char 那么运算的结果是int
如果其中有int类型的操作数 结果肯定是int
如果操作数中有long类型 结果肯定是long
如果在运算中操作数中有float类型 则结果为float
如果在运算中操作数中有double类型 则结果为double
boolean不能参与算数运算 boolean也不能和其他类型之间进行相互转换

02_Java基本语法(上)-变量与运算符_第14张图片

对于/  *法运算 其中如果有负数 则结果为负
在除法运算中 取得是相除的商
%取模运算  结果为余数  结果的正负与第一个操作数保持一致
++ 自增
--自减
++  作用都是给当前操作数+ 1
++写在操作数之后  是先取操作数的值 然后在给该数加1
++写在操作数之前 是先加1 在取值

02_Java基本语法(上)-变量与运算符_第15张图片

拓展(了解)

public static  void  main(String[] args){
		int i = 10;
		i = i++;
		System.out.println(i);   //输出10
		i = ++i;
		System.out.println(i);   //输出11

上述代码 特殊性情况 应避免此种用法
在一条语句中,应尽量避免对统一变量的多次运算操作。
02_Java基本语法(上)-变量与运算符_第16张图片
02_Java基本语法(上)-变量与运算符_第17张图片

练习

随意给出一个整数,打印显示它的个位数,十位数,百位数的值。 格式如下: 
数字xxx的情况如下: 个位数: 十位数: 百位数: 
例如: 
数字153的情况如下: 
个位数:3 
十位数:5 
百位数:1
public static void main(String[] args)
	{
		int a = 153;

		int b = a / 100;
		int c = a % 100 / 10;
		int d = a % 10;

		System.out.println("个位数:" + d);
		System.out.println("十位数:" + c);
		System.out.println("百位数:" + b);
	}

2.赋值运算符:=

当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制 类型转换原则进行处理。
支持连续赋值。

= += -+ /= %=
02_Java基本语法(上)-变量与运算符_第18张图片
02_Java基本语法(上)-变量与运算符_第19张图片

① 编译报错 结果是int  应写出s = s + (short)2;
 ②正确   += 会进行强制类型转换
 byte b = 20;
		 	byte sum = 0  ;
		 // sum = b + 1;//编译不通过  因为用int到byte 会有精度损失 
	
			sum += 1; //编译通过 正常运行 其中会默认进行强制类型转换

3.比较运算

02_Java基本语法(上)-变量与运算符_第20张图片

比较运算符的结果都是boolean型,也就是要么是true,要么是false。
比较运算符“==”不能误写成“=” 。

思考1:

boolean b1 = false; //区分好==和=的区别。 
if(b1==true) 
    System.out.println("结果为真"); 
else 
    System.out.println("结果为假");//输出结果为假

4.逻辑运算符

逻辑运算符用于连接布尔型表达式,在Java中不可以写成33 & x<6 。
&—逻辑与 | —逻辑或 !—逻辑非 && —短路与 || —短路或 ^ —逻辑异或
02_Java基本语法(上)-变量与运算符_第21张图片

&运算中只要有false  结果就为false
| 运算中 只要有true  结果就为true
 
! true 为false  false 为true

^  当两个不同时  则为true 相同时为false
异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。

“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。

“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。左边为假,右边参与

练习:

02_Java基本语法(上)-变量与运算符_第22张图片
1.x=2,y=2
2.x=2,y=1
3.x=7,y=2
4.x=7,y=1

【面试题】程序输出:

class Test { 
 public static void main (String [] args) { 
     boolean x=true; 
     boolean y=false; 
     short z=42; 
     if((z++==42)&&(y=true))z++;    
     if((x=false) || (++z==45)) z++;
       System. out.println(“z=+z);    //每一个z++都运行了
    } 
  } 
  输出:z=46

5.位运算符(对计算机二进制码进行运算)

位运算 是针对二进制数据 中的每一位进行运算
02_Java基本语法(上)-变量与运算符_第23张图片
02_Java基本语法(上)-变量与运算符_第24张图片

位运算效率最高:位运算是对机器码二进制进行操作 
面试题:使用最高效的算法 计算2的三次方
计算2的n次方  2<<(n-1)

6.三元运算符关系运算?结果1 : 结果2;

02_Java基本语法(上)-变量与运算符_第25张图片

1.表达式1和表达式2为同种类型
2.三元运算符与if-else的联系与区别:
1)三元运算符可简化if-else语句 
2)三元运算符要求必须返回一个结果。 
3)if后的代码块可有多个语句 

练习:

获取两个数中的较大数

public static  void  main(String[] args){
		int a =10;
		int b =20;
		int c =  a > b ?  a : b ;
		System.out.println(c);//输出20
		String s = a > b ? "大于" : "小于";
		System.out.println(s)//输出小于
	}
	

获取三个数中的较大数

public static  void  main(String[] args){
	 int a = 6;
	 int b = 2;
	 int c = 9 ;

	 int d = (a > b ?a : b ) > c ?(a > b ?a : b ) :c;
	 System.out.println(d);
	}

交换两个整型变量的值

	int a = 6;
	 int b = 2;
	 int temp = 0;
	 temp = a;
	 a = b;
	 b = temp;
	 System.out.println(a +"--"+ b);

不使用中间变量 交换两个整型变量的值

// 不使用中间变量 交换两个整型变量的值  方式一
		int a = 6;
		int b = 2 ;
		a = a + b; // a = 8;
		b= a- b; // b = 6;
		a = a - b ;
		System.out.println(a +"---"+b);
 // 不使用中间变量 交换两个整型变量的值  方式二   二进制异或运算
		int a = 6;
		int b = 2 ;
		a = a ^ b;
		b = a ^ b ;
		a = a ^ b;

		System.out.println(a +"---"+b);

7.运算符的优先级

运算符有不同的优先级,所谓 优先级就是表达式运算中的运 算顺序。如右表,上一行运算 符总优先于下一行。
只有单目运算符、三元运算符、 赋值运算符是从右向左运算的。

02_Java基本语法(上)-变量与运算符_第26张图片

你可能感兴趣的:(Java基础,笔记)