JAVA学记2(第二周)

四、变量与运算符(上次没写全)

  凡是自己可以命名的地方都可以叫做标识符  比如:类名,方法名,变量名,包名,常量名等

  标识符的命名规则(必须要遵守,否则编译不通过):

由26个英文字母大小写,0-9,_或$组成
数字不可以开头
不可以使用关键字和保留字,但能包含关键字和保留字
JAVA中严格区分大小写,长度无限制
标识符不能包含空格 
注:在定义标识符时要注意"见名知意"。

标识符的命名规范(建议遵守):

包名:多单词组成时所有字母都小写
类名、接口名:多单词组成时,所有单词的首字母大写
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写
常量名:所有字母都大写,多单词时每个单词用下划线连接
JAVA中的基本数据类型

整型 :byte\short\int\long  声明long类型变量需要加‘l’或‘L'后缀
浮点型:float\double   声明float类型变量需要加’f'或‘F’后缀
字符型:char    表示形式:1.使用一对‘ ’表示,内部有且仅有一个字符    2.直接使用Unicode值来表示字符型常量:'\uXXXX'    3.使用转义字符    4.使用ASCII码 
布尔型:boolean    不谈占用多少空间,只有两个值 false和true,真正分配的时候占用四个字节
引用数据类型 :

类(class)
数组(array)
接口(interface)
枚举(enum)
注解(annotation)
记录(record)
基本数据类型变量间的运算规则:

  1. 这里提到可以做运算的基本数据类型由7种,不包括boolea类型
  2. 运算规则包括:①自动类型提升   当容量小的变量与容量大的变量做运算时,结果自动转化为容量大的数据类型,容量大小不是指占用内存空间的大小,而是表示数据的范围大小    byte、short、char  --->  int  --->  long  --->   float  --->double     byte和byte做运算,short和short做运算必须都要用int来接收,结果为int类型    ②强制类型转换   将容量大的变量类型转化为容量小的变量类型,需要使用强制类型转换  强制类型转换需要使用强转符:()在()中指明要转换为的数据类型
  3. 不允许变量名时数字开头是为了“自洽”

string 

 ①关于String的理解

  1. String类,属于引用数据类型  俗称字符串
  2. String类型的变量,可以使用一对“”的方式进行赋值
  3. String声明的字符串内部,可以包含0、1个或多个字符

② String与基本数据类型变量间的运算

  1. 这里的基本数据类型包括boolean在内的8种
  2. String与基本数据类型变量间只能做连接运算,使用“+”表示,必须要连接string类型
  3. 运算的结果是String类型
  4. 将String类型的变量转化为基本数据类型,使用Integer类  例如:
    int num2 = 10; 
    String str9 = num2 + "";
    int num3 = Integer.parseInt(str9)

     

 运算符

运算符类型

  1. 算数运算符  + - + - * / %                                                                                                                 (前)++ (后)++ (前)-- (后)-- +(连接符)   取模时的结果符号与被取模数相同,即%前面那个数,连接符连接字符串型与其他类型,其他的与C++差不多
  2. 赋值运算符  = += -=  *=  /=  %=                                                                                                       ①当“=”两侧数据类型不同时,可以使用自动类型转换或使用强制类型转换原则进行处理   ②支持连续赋值③+= -=  *=  /=  %=  操作不会改变变量本身的数据类型
  3. 比较(或关系)运算符   ==  !=  >  <  >=  <=  instanceof(在面向对象的多态性时讲解)      
  4. 逻辑运算符   a&b  a&&b  a|b  a||b  !a  a^b(亦或)                                                                             &和&&的区别:&左边的无论什么情况,都会执行&右边的操作,而&&如果左面false则一定不会执行右面,              | 和||的区别:同理,如果左边为true则都会执行右边的操作,但如果左边为false则|会继续执行右边的操作而||则不会再执行右边的操作     推荐使用:&&和||
  5. 位运算符    <<  >>  >>>  &  |  ^  ~      针对数值类型的常量或变量进行运算,运算的结果也是数值                                                                                                                                                  <<:在一定范围内:每左移一位就在原有的基础上*2(对于正负数都适用)                              >>:在一定范围内:每右移一位就在原有的基础上/2(对于正负数都适用)                              1|1结果为1         1|0结果为1           0|1结果为1            0|0结果为0                                           ~0就是1            ~1就是0        ~:对应位结果为1,则结果为0,对应位为0,则结果为1              1^1 结果为0           1^0结果为1            0^1结果为1
  6. 条件运算符        格式:(条件表达式)?表达式1:表达式2       ①条件表达式的结果是boolean类型,如果条件表达式的结果是true则执行表达式1,否则执行表达式2    ②表达式1和表达式2需要是相同的类型或能兼容的类型    ③凡是可以使用条件运算符的位置都可以改写为if-else,反之能使用if-else结构,不一定能改写为条件运算符   两个都能用时推荐用条件运算符,执行效率稍高
  7. Lambda运算符

五、流程控制 

  1. 顺序结构
  2. 分支语句           ①if-else条件判断结构    格式:if(条件表达式){语句块;}      或        if(条件表达式){语句块1;}else  if(条件表达式2){语句块2;}        或           if(条件表达式){语句块1;}else  if(条件表达式2){语句块2;}   else  if(条件表达式3){语句块3;}  ······  else  if(条件表达式n){语句块n;}             注:如果多个表达式之间没有交集,则哪个表达式声名在上面,哪个表达式声名在下面都可以         如果多个表达式之间是包含关系,需要将条件范围小的声名在大的上面,否则条件范围小的就不可能被执行

 使用Scanner获取不同类型数据的步骤

  1. 导包  import  java   util.Scanner;将其写在类的前面 
  2. 提供(或创建)一个Scanner类的实例
  3. 调用Scanner类中的方法,获取指定类型的变量
  4. 关闭资源,调用Scanner类的close()

如何获取一个随机数?

  1. 可以使用Java提供的API:Math类的random()
  2. random()调用以后会返回一个[0.0,1.0)范围内的double类型的随机数
  3. 获取一个[0,100]范围的随机整数:int  num1=(int)(Math. random()  *  100)                            获取一个[1,100]范围的随机整数:int  num1=(int)(Math. random()  *  101)                           获取一个[a,b]范围的随机整数:int  num1=(int)(Math. random()  *  ( b - a + 1 ) ) + a

 switch-case选择结构

  1. 格式:
    switch(表达式){
    case 常量1:
       //执行语句1
       //break;
    case 常量2:
       //执行语句2
       //break;
    ...
    default:
       //执行语句
       //break;
    }

     

  2. 根据表达式的值,依次匹配case语句,一旦与某一个case中的常量相等,那么就执行此case中的执行语句。执行完此执行语句之后,①遇到break,则执行break后,跳出当前的switch-case结构      ②没有遇到break,则继续执行其后的case中的执行语句,直到遇到break或执行完所有的case及default中的语句,退出当前的switch-case结构
  3. switch中的表达式只能是特定的数据类型。如下:byte\short\char\int\枚举\string                       case后都是跟的常量,使用表达式与这些常量做相等的判断,不能进行范围的判断                 default位置是灵活的,但如果放在第一个且未加break,在执行后会继续执行剩下的case情况。

循环语句

  1. for 循环                                                                                                                                              ①格式:for(①;②;④){③;}
  2. while循环                                                                                                                                          ①格式:    ①  while(  ②  ){③;④;}
  3. do-while                                                                                                                                             ①格式:   ①   do{③  ④}while(  ②  );                                                                                        注:do-while   使用会较少一些

 无限循环

  1. 格式:while(true)     for( ; ;)

 嵌套循环

  1. 不再多说

break和continue

  1.  break   适用范围:switch-case循环结构     结束(或跳出)当前循环结构     在此关键词的后面不能再声名执行语句
  2. continue   适用范围:循环结构中         结束(或跳出)当次循环    在此关键词的后面不能再声名执行语句

IDEA的安装 

在此网站https://www.jetbrains.com/idea/中可以安装IDEA


 六、数组

 

  1. 数组中的元素在内存中是依次紧密排列的、有序的
  2. 属于引用数据类型的变量

数组的声明与初始化: 数据类型  变量名  =  变量值      例:double[ ]prices;    prices  =  new  double  [ ]  =  {xx,xx,xx};           ||         int arr[ ] = new int [4];      ||           int [ ] arr1 = {1 , 2,3,4,};         错误形式:int [ ] arr2 = new int [3]{1,2,3};     int [3] arr3 = new int [ ];

数组的长度:数组名.length;

遍历数组时的模板:fori  再按回车

输出时的模板:  .sout再按回车

 

 

数组元素的默认初始化值

  1. 整型数组元素的默认初始化值:  0
  2. 浮点型数组元素的默认初始化值:  0.0
  3. 字符型数组元素的默认初始化值:  0  (或理解为'\u0000')
  4. Boolean型数组元素的默认初始化值:  false
  5. 引用数据类型数组元素的默认初始化值:  null

一维数组的内存解析

 Java中内存结构的划分:   将内存区域划分为5个部分:程序计数器,虚拟机栈,本地方法栈,堆,方法区

与数组相关的内存结构:①虚拟机栈:用于存放方法中声明的变量    特点:后进的先出去,先进的后出去②堆:用于存放数组的实体(即数组中所有实体,存放的实际值)

注:int [ ] arr1 = arr;实际上是将arr的地址赋给  arr1

 

二维数组

  1.  静态初始化:数组变量的赋值和数组元素的赋值同时进行        例:int [ ] [ ] arr2 = new int [ ] [ ] { {1,2,3} , {4,5} , {6,7,8,9} };
  2. 动态初始化1:数组变量的赋值和数组元素的赋值分开进行       例:①string [ ] [ ] arr3 = new string [3] [4];       ②double [ ] [ ] arr4 = new double [2] [ ]
  3. 数组长度:可以当成一维数组来看   后面也是加 .length 后缀
  4. 方式①外层元素默认值:地址值         内层元素默认值和之前一维数组相同                              方式②外层元素默认值:默认存储null     内层元素:不存在,如果调用会报错,(NullPointerException)

二维数组的内存解析

  •  这里类似于一维数组,在每次new时都会开辟一块新空间

 数组的扩容与缩容

  1. 将原有数组中的元素复制到新的数组中        for(int i=0;i<arr;i++){newArr [ i ] = arr [ i ];}
  2. 将10,20,30三个数据添加到新数组中        newArr[arr.length] = 10;                    newArr[arr.length + 1] = 10 ;         newArr[arr.length + 2] = 10 ;             arr = newArr;
  3. 缩容:方式1:不新建数组         for(int i= deleteIndex;i < arr.length - 1;i++){arr [i] = arr[i+1];}arr [arr.length-1] = 0;            方式2:新建数组,新的数组的长度比原有数组的长度少1个    

 数组的查找

  1. 线性查找:遍历数组,如果有相同的值就输出
  2. 二分法查找:数组有序,从中间开始比较,向左或向右检索

七、类与对象

 三条主线:

  •  Java类及类的成员:(重点)属性、方法、构造器;(熟悉)代码块、内部类
  • 面向对象的特征:封装、继承、多态、(抽象)
  • 其他关键字的使用:this、super、package、import、static、interface、abstract

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值