java基础----(变量、逻辑运算、程序流程控制)

java基础知识图

在这里插入图片描述

java的命名规范

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

标识符

标识符: 用于给程序中的变量、类、方法命名的符号
使用标识符规则如下:

  • 可以由字母、数字、下划线(_)和美元符号($)组成,其中数字不能打头
  • 不能是Java的关键字和保留字,但可以包含
  • 不能有包含空格
  • 只能包含美元符号($),不能包含@、#等其他特殊符号

关键字

关键字: 具有特殊含义的单词,所有字母都是小写的
在这里插入图片描述
在这里插入图片描述

保留字

保留字: 尚未被使用的关键字,在未来的版本中可能被使用(命名标记符时要避免使用这些保留字)

byValue, cast, false, future, generic, inner, operator,
outer, rest, true, var , goto ,const,null

变量

变量: 内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型),该区域的数据可以在同一类型范围内不断变化。

  • Java中每个变量必须先声明,后使用。
  • 指定的变量只能接受类型与之匹配的值。
变量分类

在方法体外,类体内声明的变量称为成员变量。
在方法体内部声明的变量称为局部变量。
在这里插入图片描述

基本数据类型
整数类型
  • int 是最常用的数据类型,在通常的情况下,直接给出一个整数值默认就是int类型。
  • 将一个比较小的整数(在byte或short类型的表数范围内)赋给一个byte或short变量,系统会自动把这个整数值当作byte或short类型处理
  • 一个巨大的数值系统不会把该数值当作long类型处理,应该在数值后面加上字母"l’或"L"为后缀。(推荐"L",因为"l"会和1搞混)
    在这里插入图片描述
浮点型

与整数类型类似,Java 浮点类型也有固定的表数范围和字段长度,不受具体OS(操作系统)的影响。
Java 的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’。
浮点型常量有两种表示形式:
十进制数形式:如:5.12 512.0f .512 (必须有小数点)
科学计数法形式:如:5.12e2 512E2 100E-2
在这里插入图片描述

字符型(char)

用于表示单个字符,字符型值必须用单引号括起来(‘ ’)

字符型有三种表示形式:

  • 直接通过单个字符来指定字符值,例如‘A’,‘9’等
  • 通过转义字符表示特殊字符型值,例如‘\n’,‘\t’
  • 使用Unicode值来表示字符型值,格式为‘\uXXXX’,其中XXXX代表一个十六进制的整数
java中常用的转义字符
转义字符&说明Unicode表示方式
\b(退格符)\u008
\n(换行符)\u00a
\r(回车符)\u008d
\t(制表符)\u009
\ "(双引号)\u0022
\ '(单引号)\u0027
\(反斜线)\u005c
布尔类型(boolean)

boolean 类型适于逻辑运算,一般用于程序流程控制:

  • if条件控制语句
  • while循环控制语句
  • do-while循环控制语句
  • for循环控制语句
  • boolean类型数据只允许取值true和false,无null
引用数据类型
  • 类、接口、数组、枚举、注解
  • String类型属于引用类型
类型转型
自动类型装换

容量小的类型自动转换为容量大的数据类型。数据类型按容量大小排序为:
在这里插入图片描述

强制类型装换

从容量大的类型转换为容量小的类型需要强制装换(会造成精度损失或溢出):

public class TestChange {
    public static void main(String[] args){
        int a = 100;
        int b = 200;
        long c = a + b; //自动将int转换为long

        long l1 = 1024l;
        int i = (int) l1;   //需要强制转换,没有产生溢出

        long l = 1024L * 1024 * 1024 *4;
        int j = (int) l;    //会产生溢出

        double pi = 3.1415926535897932384;
        float f = (float) pi;   //会造成精度损失
    }
}
数值运算时的自动转换

多种基本类型参与的表达式运算中,运算结果会自动的向较大的类型进行转换

public class TestAutoChange {
    public static void main(String[] args){
        //由于有long型的直接量参与,整个表达式的结果为long
        long earthAndMoon = 10 * 365 * 24 * 60 * 60 * 299792458l;
        
        //由于有double型的直接量599.0参与,整个表达式的结果为double
        double change = 800 - 599.0;
        
        //80/100结果为0,右边都是int类型数据,运算结果也为int类型
        //最终结果为0.0,因为0再赋值给double型,将0转换为0.0
        double persent1 = 80/100;

        //结果为0.8,右边表达式有double型直接量参与,
        //运算结果为double型
        double persent2 = 80.0 /100;
    }
}

byte、char、short转换为int

byte、char、short三种类型实际存储的数据都是整数,在实际使用中遵循如下规则:

  • int直接量可以直接赋值给byte、char、short,只要不超过其表示范围
  • byte、char、short三种类型参与运算时,先一律转换成int类型再进行运算
public class Test{
    public static void main(String[] args){
        char ch = 65;
        System.out.println(ch);		// A
        System.out.println(ch+2);	// 67
    }
}

类型提升

进行算术运算时:

  • 两个操作数有一个为double,计算结果提升为double
  • 如果操作数中没有double,有一个float,计算结果提升为float
  • 如果操作数中没有float,有一个long,结果提升为long
  • 如果操作数中没有int,均为short和byte,计算结果仍旧提升为int
  • 任何类型与String相加(+)时,实为拼接,其结果自动提升为String

运算符

运算符和表达式是Java程序的基本组成要素。运算符是一种“功能”符号,用以通知 Java 进行相关的运算

算术运算符

这些运算符用于执行基本的数学运算

运算符运算例子结果
+a=5+5a=10
-a=5-4a=1
*a=1*2a=2
/a=5/5a=1
%取模a=7%52
++自增a=1;a++a=2
自减a=1;a–a=0

注意:

  • “+”可以作为字符串连接符号
  • “-”除了作为运算外,还可以作为求负的运算符
  • 自增和自减只能用于操作变量,不能直接操作数值,常量伙子表达式
赋值运算符

用于为变量指定变量值

String str="java"; //为变量str赋值java
double pi=3.14;//为变量pi赋值3.14

还可以将一个变量赋值给另一个变量

String str1=str;//将str的值赋给str1 
比较运算符

用于判断两个变量的大小,比较的结果是一个布尔值(true或false)

运算符运算例子结果
==等等于4==3false
!=不等于4!=3true
>大于7>2true
<小于2<1false
>=大于等于8>=5true
<=小于等于8<=5false
instanceof是否是类的对象“java” instanceof Stringtrue
逻辑运算符

用于操作两个布尔型的变量或常量
短路:一方条件不成立就不执行了

  • &&(短路与):前后两个操作数必须为true才返回true,否则为false
  • &(不短路与):作用与&&相同,但不短路
  • ||(短路或):只要两个操作数中有一个为true,则返回true,否则为false
  • |(不短路或):作用与||相同,但不短路
  • !(非):只需要一个操作数,如果该操作数为true,返回false。如果为false,则返回true
  • ^(异或):当两个操作数不同时才返回true,两个操作数相同返回false
位移运算符

在这里插入图片描述
<<
在这里插入图片描述
>>与>>>
在这里插入图片描述
计算机存储负数时需要进行反码与补码操作,而作用位运算时,负数已经是储存好的,不需要转化为源码后(-1,反码)再计算
&
在这里插入图片描述
|
在这里插入图片描述
^
在这里插入图片描述
~
在这里插入图片描述
查看负数要转化为源码(-1,反码)

三元运算符

格式:

表达式?表达式1:表达式2//表达式为true时,结果返回表达式1
//表达式为false时,结果返回表达式2

三元运算符与if-else的联系与区别:

  • 三元运算符可简化if-else语句
  • 三元运算符要求必须返回一个结果。
  • if后的代码块可有多个语句
运算符的优先级

大部分运算符都是从左向右结合的,只有单目运算符、赋值运算符和三目运算符除外。
运算符有不同的优先级,所谓的优先级就是在表达式运算中的运算顺序。

运算符优先级

运算符说明运算符
分隔符. [] () {} , ;
单目运算符++ - - ~ !
强制类型转换运算符(type)
乘法/除法/求余* / %
加法/减法+ -
位移运算符<< >> >>>
关系运算符< <= >= > instanceof
等价运算符== !=
按位与&
按位异或^
条件与&&
条件或II
三目运算符?:
赋值= += -= *= /= ^= %= <<= >>= >>=

程序流程控制

顺序结构

程序从上到下逐布的执行,中间没有任何判断和跳转。

分支结构

java提供了两种常用的分支结构:if语句和switch语句,其中if语句使用布尔表达式和布尔值作为分支条件来进行分支控制。switch语句则用对多个整数值进行匹配,从而实现分支控制。

if条件语句
f语句使用布尔表达式和布尔值作为分支条件来进行分支控制,有以下三种情况:

//单条件判断:条件成立执行代码块
if(条件){
//代码块
}

//双条件判断:条件成立执行代码块1,否则执行代码块2
if(条件){
//代码块1
}else{
//代码块2
}

//多条件判断:如果条件1成立执行代码块1,不成立判断条件2,条件2如果成立则执行代码块2,否则执行代码块3.
if(条件){
//代码块1
}else if(条件2{
//代码块2
}else{
代码块3
}

switch分支语句
由一个控制表达式和多个case标签组成,和if语句不同是,switch语句后面的控制表达式的数据类型只能是:byte,short,char、int四种整数类型,枚举类型和java.lang.String类型(从java7才允许),不能是boolean类型。

//控制表达式的值和case的值去进行匹配,匹配到则执行代码块,匹配不到则执行default代码块。
switch(控制表达式){
	case1:{
		//代码块
		break;//跳出分支,不跳出继续往下执行(记得加上)
	}
	case2{
		//代码块
		break;
	}..
	default{
		//代码块3
	}
}
循环结构

在满足循环条件的情况下,反复的执行某一段代码,这段被重复执行的代码被称为循环体。当反复执行这个循环体时,需要在适合的时候把循环条件设为false,从而结束循环,否则循环将一直循环下去,形成死循环。

循环语句可能包含如下四部分:

  • 初始化语句:一条或多条语句,这些语句用于完成一些初始化的 工作,初始化语句在循环开始之前执行
  • 循环语句:这是一个Boolean表达式,决定是否执行循环体
  • 循环体:如果循环条件允许,这个代码块将被重复执行
  • 迭代语句:在一次循环体执行结束后,对循环体条件求值之前执行,通常用于控制循环条件中的变量,使得循环在合适的时候结束

while循环语句
当循环条件符合时,反复执行代码块

int count=0//初始化语句
while(count<10{//循环条件 count小于10执行
	//代码块  循环体
	count++//迭代语句  
}

do while循环语句
无论条件成不成立都会执行一遍代码块,再去判断循环条件是否true,为true继续循环,否则结束循环

int count=0//初始化语句
do{
		//代码块  循环体
	count++//迭代语句  
}while(count<10;//循环条件 count小于10执行

for循环语句
for循环是更简洁的循环语句,大部分情况下,for循环可以代替while、do while循环

forint count=0;count<10;count++{//初始化语句;循环条件;迭代语句  
//代码体
}

嵌套循环语句
将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while均可以作为外层循环和内层循环。

实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。

设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n=mn次。

break语句
某些时候需要在某种情况下出现强行终止循环,而不是等到循环条件为false时才跳出循环,就可以用break来完成。直接终止循环体。只能用于 switch语句和循环语句中。

continue语句
continue语句和break语句类似,区别是continue只是忽略本次循环执行下次循环,不会终止循环。只能用于循环语句。

return语句
return关键字并不是专门用于结束循环的,return的功能是结束一个方法。不管你有多少层循环,在这个方法内都直接结束。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值