Java基础知识之基本类型和运算符

Java基础知识之基本类型和运算符

1.Java入门【了解】
Java之父:詹姆斯·高斯林

Java面向对象的方式由以下三个部分组成

OOA(面向对象分析)
OOD(面向对象设计)
OOP(面向对象编程)
1.JDK
JDK是Java开发工具包,是Sun Microsystems针对Java开发员的产品。
  JDK中包含JRE,在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin 和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而 jvm和 lib和起来就称为jre。
2.JRE
  是运行基于Java语言编写的程序所不可缺少的运行环境。也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。
3.JVM
  就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。
 
三者之间的关系:简单来说就是JDK包含JRE,JRE又包含JVM的关系
在这里插入图片描述
2.常量【伪重点】
2.1 生活中的常量
那些内容我们可以认为是常量???
数值
π E C G
文本
先帝创业未半…
北国风光,千里冰封
文字
A B C D
你 我 他
1 2 3
常量在生活中就是不能发生改变的量
数值,文本,文字…

开发来源于生活,最终高于生活,反馈于生活

2.2 开发中使用的常量
代码运行的过程中不会发生改变的数据就是常量!!!

开发中使用的常量
整数
1 2 3 4 5
-1 -2 -3 -4 -5
小数(浮点型)
3.14 0.618 9.8 1.0 0.0
布尔类型(boolean)
true 对/真
false 错/假
字符常量
【重点】
使用【英文单引号】包含的【单个元素】
‘A’ ‘B’ ‘C’ ‘a’ ‘b’ ‘c’
‘你’ ‘我’ ‘他’ ‘1’
‘123’ 啥也不是
字符串常量
【重点】
使用【英文双引号】包含的所有内容
“壮哉我大中华…”
“1”
2.3 转义字符[了解]
代码中有些标点符号有特殊含义
代码中也存在一些本身没有含义的字符,通过 \ 转义之后,变成有 一定含义的字符
\n 回车
\t 制表符
\r 换行

2.4 常量使用总结
常量在代码中是无法修改的量,主要功能是提供给程序运行使用 的数据,存在整数,小数,真假关系(布尔类型),字符常量,字符串 常量。
【重点】
字符使用不允许使用字符对应的编码,有且只能使用字符 本 身!!!

3.变量【伪重点】
3.1 生活中的变量

变量特征:

  1. 可变性
  2. 存在一定的计量单位
  3. 会存在一个名字用来称呼
    Java中定义变量的格式规范
    数据类型 变量名 = 对应数据类型的初始化数据;
    3.2数据类型【重点】
    Java语言是强类型(strongly type)语言,强类型包含两个方面的含义:
    ① 所有的变量必须先声明后使用;②指定类型的变量只能接受与之匹配的值。
    Java语言支持的数据类型分为两类:基本数据类型和引用类型
    八大基本数据类型:
    在这里插入图片描述

3.3变量名/标识符规范【重点】
在注册邮箱时,可以发现邮箱中有要求
6~18字符,可以使用字母,数字,下划线,要求必须是字母开头

以下规范参考AJCG 阿里巴巴Java开发手册,码出规范,码出高效。

什么是标识符
程序员自己对于代码中一些内容起的名字,变量名,方法名,类 名…
规范

扫描二维码关注公众号,回复: 11027056 查看本文章
  1. Java中的标识符有且只能使用英文字母(A ~ Z a ~ z), 数字(0 ~ 9) 以及唯一可以使用的标点符号 下划线_ 。其他任何 字符都不可以使用!!!
  2. 标识符要求英文字母开头。
  3. 标识符没有严格的长度限制,但是会根据实际的使用情况来 约束标识符长度
  4. Java中的标识符严格区分大小写
  5. 标识符要符合【见名知意,动宾结构】
    推荐方式
    getStudentAge setStudentAge
    studentScore studentGender
    不允许
    lg lp yy nn ez gjz 采用拼音简写是不允许 的!!!
    laoGong 不行!!!
    payTime peyBeiZhu 不允许!!!
  6. 标识符要求符合一定的命名要求
    a. 驼峰命名法:
    小驼峰
    一般用于变量名,方法名
    首字母小写,之后的每一个单词首字母大写 getStudentAge setStudentAge
    studentScore studentGender
    大驼峰
    一般用于类名,接口名
    所有单词首字母大写
    FirstJava Demo1 Person UserService StudentDao b. 下划线命名法:
    一般用于Java中的常量
    MAX_VALUE 最大值
    DEFAULT_CAPACITY 默认容量
  7. Java中已经被占用的关键字和保留字不能用于自定义标识符
    变颜色的都不可以使用
    代码演示
    整型变量演示
/* 整型变量演示 */ 
class Demo3 {    
    public static void main(String[] args) {        
        /* 数据类型 变量名 = 初始化数据; */       
        // 变量定义一行只定义一个,并且初始化操作                
        byte byteNumber = 10;        
        short shortNumber = 20;        
        int intNumber = 30;        
        // 40L是告知编译器这里是一个long类型        
        long longNumber = 40L;                
        // 使用对应变量,直接使用变量名即可!!!
        System.out.println(byteNumber);
        System.out.println(shortNumber); 
        System.out.println(intNumber);   
        System.out.println(longNumber);    
    } 
}

浮点型变量演示

/* 浮点型变量演示 */ 
class Demo4 {   
    public static void main(String[] args) {        
        float floatNumber = 3.14F;
        /*        
        Demo4.java:4: 错误: 不兼容的类型: 从double转换 到float可能会有损失                float floatNumber = 3.14;                                                            ^        
        1 个错误        
        计算机保存数据,考虑第一原则是数据的精度,double类 型精度        		是远远高于float类型,计算机会将所有的小数都看作是 double 类型据。			3.14默认为double类型,这里赋值给float 是存在精度        
        不一致报错。        
        这里需要告知计算机,这里3.14是一个float类型,在 3.14之后加上一个大		写F           
        float floatNumber = 3.14F;       
        */        
        double doubleNumber = 0.618;
        System.out.println(floatNumber); 
        System.out.println(doubleNumber);  
    } 
}

字符类型变量演示

class Demo5 {   
    public static void main(String[] args) {  
        /* 要求字符类型的常量有且只能使用字符本身 */      
        char ch1 = 'A';        
        char ch2 = '我';                
        System.out.println(ch1);       
        System.out.println(ch2);   
    } 
}

boolean类型变量演示

class Demo6 {    
    public static void main(String[] args) {       
        boolean ret1 = true;        
        boolean ret2 = false; 
        System.out.println(ret1);
        System.out.println(ret2);   
    } 
}

错误情况演示

class Demo7 {    
    public static void main(String[] args) {        
        int num1 = 10;               
        /*
        Demo7.java:14: 错误: 找不到符号
        System.out.println(num2);
                            ^ 
               符号:   变量 num2          
               位置: 类 Demo7        
               1 个错误       
         */        
        // System.out.println(num2); 
        int num3;                
        /*        
        Demo7.java:24: 错误: 可能尚未初始化变量num3
        System.out.println(num3);      
                            ^        
                            1 个错误
        */        
        System.out.println(num3);   
    } 
}

4.运算符
4.1 算术运算符
小学知识点:
加+,减-,乘×,除÷,小括号()
开发中使用的算术运算符:
加 + 减 - 乘 * 除 / 取余 % 小括号 () = 赋值号
注意事项:

  1. 先乘除,后加减
  2. 从左至右运行
  3. 除数不能为0
  4. 先运算小括号里面的内容
    【批注】
  5. Java中所有的运算符优先级有18-19个等级,优先级 高的是小括号,开发中 如果出现了需要整理优先级的问题,简单粗暴加括号 2. 小括号里面的内容对于小括号外部而言是一个整体, 是一个【常量】
    = 赋值号
    赋值号的功能是将赋值号右侧的数据,赋值给左侧的【变量】
    char ch = ‘A’; True
    10 = 20; false
    使用总结:
  6. 变量有且只能是被赋值之后才可以修改内容,未赋值不能修 改
  7. 取余操作注意细节
  8. 【批注】 取余操作针对整数,小数没有取余操作
    算术运算符演示
/*算术运算符演示*/
class Demo1{
	public static void main(String[] args){
		//定义两个int类型变量
		int num1 = 10;
		int num2 = 20;
		// num1 + num2结果赋值给num1
		num1 = num1 + num2;//num1=30 num2=20
		//变量在代码运行的过程中是会发生改变的
		num1 = num1 * num2;//num1=600 num=20
		num1 = num1 - num2;//num1=580 num2=20
		num1 = num1 / num2;//num1=29 num2=20
		// 20/29=0...20
		//5/2=2.....1
		//9/4=2.....1
		num1 =num2 % num1;//num1=20 num2 =20
		/*
		num2的值从开始到最后没有发生改变
		 num2从开始到现在从未被赋值
		*/
		num1+=num2;
		num1*=num2;
		num1%=num2;//num1=num1%num2
		
		System.out.println(num1);
		System.out.println(num2);
	}
}

		

4.2关系运算符

大于
< 小于
= 大于等于
<= 小于等于
!= 不等于
== 等于判断

注意事项:

  1. 关系运算符结果是一个boolean数据类型,true or false
  2. 关系运算符一般用于条件判断,数据过滤…

4.3自增自减运算符【难点,考点】
【明确】 自增自减运算符【有且只能操作变量】,不可以操作常量
【建议】 开发中尽量减少或者标准化使用自增自减运算符。
语法
++ 自增运算符 操作的变量自增1 等价于 += 1
– 自减运算符 操作的变量自减1 等价于 -= 1
【难点】
前后关系
自增自减运算符在
变量之前:首先执行自增自减操作,再来完成当前行代码 的运行
变量之后:首先执行当前行代码,再来执行自增自减操作
【建议】

  1. 尽量使用 += 1 或者 -= 1替换自增自减运算符。阅读性 更好,并且在Swift语言中 已经取消自增自减运算符,使用 += 1 和 -= 1代替,为了避 免没有必要的歧义性
  2. 如果非要使用自增自减运算符,推荐自增自减运算符,单独 成行. int num = 10;
    ++num; or num++; 没有任何的歧义性
    代码演示
/*自增运算符前后关系演示*/
class Demo4{
	public static void main(String[] args){
		int num1=10;
		//双引号内容所见即所得
		/*
		自增运算符在操作之后,首先操作数原始数据参与该代码运行
		当前代码运行结束之后,再进行自增操作
		先执行当前代码,再进行自增操作
		*/
		System.out.println("num1++ :"+num1++);//num1++ :10
		System.out.println("num1 :"+num1);//num1 :11
		/*
		自增运算符操作数之前,首先执行自增操作,num1 += 1;
		num1==>12 然后在进行数据展示
		先执行自增,在参与当前代码执行
		*/
		System.out.println("++num1 : "+ ++num1);//++num1 : 12
		System.out.println("num1 : "+num1);//num1 :12
	}
}

【自增自减运算符考点】

/*自增自减面试题1*/
class Demo6{
	public static void main(String[] args){
		int num = 5;
		int ret = num++ * ++num;
		System.out.println(ret);
		System.out.println(num);
		/*
		请问num值经历了几次自增操作?
			两次,num确定最后结果为7
		ret的结果从何而来?
			num++
				++在后,提供的数据5,num++在运行表达式中提供的数据为5
				这里运算操作是一个乘以操作,num++需要执行完毕 num==>6
			++num:
				++在前,提供的数据6+1==>7
			
			最终表达式的结果为
				5 * 7 = 35 ==>ret;
		int ret = num++ * ++num;拆解
			num == 5;
			num += 1 ==>6
			*
			++num ==>7
		*/
	}
}
/*常见面试题2*/
class Demo7{
	public static void main(String[] args){
		int num=5;
		++(num++);
		
		System.out.println(num);
		/*
		Demo7.java:5: 错误: 意外的类型
                ++(num++);
                      ^
			  需要: 变量
			  找到:    值
			1 个错误
		解释:
			因为{num++)是存在于小括号以内,按照计算优先级处理,首先计算
			小括号里面的内容,但是因为小括号是一个整体,对外的数据时num++
			的结果,这是一个常量!!!
				自增自减运算符,只能操作变量,不可以操作常量。
				语法报错!!!
			同理
				++num++也是错误的
				++num结果是一个常量
				
				(num)这个是常量还是变量呢
				这个小括号是无用的!!!
				(num)++这是对的
				
				num=5
				拿++num*++num=42
				
				5
				num++ + --num + ++num
				num=16
			*/
			
		
	}
}

4.4逻辑运算
与 ( &)
银行的金库,两个人两把钥匙,需要同时在场,缺一不可。
&&
【重点】同真为真,有假【即】假 或
自己家门,我和我女朋友出去逛街,只要有一个人带有钥匙就可 以回家,满足一个条件即 可。

||
【重点】有真【即】真,同假为假
非 取反 !
逻辑运算符运算的结果都是boolean类型数据。
通常用于条件判断,数据过滤…
代码演示

/*逻辑运算符演示*/
class Demo8{
	public static void main(String[] args){
		//定义一个boolean类型的变量
		boolean ret = false;
		
		ret = 5 > 3 && 10 > 8;
		System.out.println("ret :"+ret);//true
		
		ret = 5 < 3 && 10 > 8;
		System.out.println("ret :"+ret);//false
		
		ret = 5 < 3 || 10 > 8;
		System.out.println("ret :"+ret);//true
		
		ret = 5 < 3 || 10 < 8;
		System.out.println("ret:"+ret);//false
		
		ret = !(5 > 3);
		System.out.println("ret :"+ret);//false
	}
}

【逻辑运算符短路原则】

/*逻辑与短路原则 */
class Demo9{
	public static void main(String[] args){
		int num = 5;
		boolean ret = false;
		/*
		只要有错后面的就不看了吗?为了效率是吗?
		
		逻辑与的情况下:
			同真为真,有假【即】假
			当出现一个条件为false之后,整个逻辑与表达式的结果为
			false,从false之后的其他所有条件都不会执行。
			计算机的节约性能问题!!!
		*/
		ret = num > 10 && ++num>1;
		System.out.println("ret :"+ret);
		System.out.println("num :"+num);
	}
}
/*逻辑或短路原则*/
class Demo10{
	public static void main(String[] args){
		int num = 10;
		boolean ret = false;
		/*
		逻辑或短路原则
			有【真】即真,同假为假
			只要发现一个条件为真,整个表达式结果已经确定为真
			从true条件开始其他条件不需要执行
		*/
		ret = num > 5 || ++num > 20;
		System.out.println("ret :" + ret);//true
		System.out.println("num :"+num);//10
	}
}
发布了7 篇原创文章 · 获赞 0 · 访问量 105

猜你喜欢

转载自blog.csdn.net/qq_43634768/article/details/105547712