第一篇

变量
 (1)在程序的运行过程中,其值在指定范围内变化的值
 (2)是内存中一个区域,用于存储数据
 (3)变量的定义格式:
  A:数据类型 变量名 = 初始化值;
 (4)变量在使用的时候
  A:第一种,在声明的时候,就初始化值
   **数据类型 变量名 = 初始化值;
   
  B:第二种 在使用前,赋值
   **声明
   **赋值
   **使用
   
数据类型
 (1)java语言分为两种数据类型
  A:基本数据类型
  B:引用数据类型(类,接口,数组)
 (2)基本数据类型
  A:区别 在内存中分配的空间大小不同,从而导致它表示的数据范围不同
  B:4类8种
   **整数
    ***byte 占1个字节//8个开关,8个二进制位
    ***short 占2个字节
    ***int 占4个字节
    ***long 占8个字节 其后加L或l标识
   **浮点数
    ***float 占4个字节 其后加F或f标识3.3f 
    //32个二进制位
    //1位符号位
    //8位代表指数位
    //23位尾数位
    
    ***double 占8个字节
   **字符
    ***char 占2个字节 
   **布尔型
    ***boolean This data type represents one bit of information,
    ***but its "size" isn't something that's precisely defined.
    ***这个数据类型代表一个比特的信息,但它的“大小”不是精确定义的东西.
    ***true,false
  C:默认情况下:
   **整数是int类型
   **浮点数是double类型
 (3)数据参与运算
  A:整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则
   **容量小的类型与容量大的类型进行计算,默认转换为容量大的数据类型;数据类型按容量大小排序为:
    ***byte,short,char->int->long->float->double
    ***byte 和 short不能和char之间互相转换,byte可以直接赋值给short,但是他们三者在计算时首先会转         换为int类型
   **容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注     意。
   **有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,
     然后再进行计算。
  B:强制转换符
   **格式:(数据类型)(要被转换的数据) byte b = (byte)(130);
  C:字符型参与运算
   **首先会去找对应字符的unicode码值。然后运算。
   **char 类型取值范围0~2(16)-1,我就有了一个问题?能不能把整数直接赋值给char类型的变量
  D:布尔型参与运算char ch = 10;byte b = 10;char ch = '';
   **不能参与运算
  E:字符串参与运算
   **它是和参与运算的数据相连接组成了一个新的字符串。
   **因为有了这个特性,所以我们求出了我们名字的字符值就可以在内存中这样输出
   **System.out.println(""+'\u51AF'+'\u4F73');输出的结果就是我的名字
  
  

运算符
 (1)算术运算符 +,-,*,/,%,++,--
  A:%
   **当左边的绝对值小于右边:结果是左边
   **当左边的绝对值等于右边或者是右边倍数的时候:结果是0
   **当左边的绝对值大于右边:结果是余数,符号取决与左边的的符号
   **取余的正负号取决于左边,右边忽略不记
   **用途:任意正整数%2 结果是要么0,要么1。用于切换条件
  B:++,--
   int a = 3;
   int b = a++;
   System.out.println(a);
   **递增,递减运算符。就是加1或者减1
   **单独存在,放在操作数的前面或者后面,结果一样
   **参与运算时:
    ***放在操作数的前面,先自身加或者减1,然后再参与运算
    ***放在操作数的后面,先参与运算,然后再自身加或者减1
   
  C:+
   **作为数据的符号(正号)
   **做加法运算
   **字符串连接符"5 + 5 =" + (5 + 5);
 (2)赋值运算符
  A:=:赋值运算符 把右边的值赋给左边
   
  B:+=:加赋值运算符 把左边和右边的和赋给左边
  
   
       
 (3)比较运算符
  A:==,!=,>,<,>=,<=
  B:比较运算符的结果都是boolean型,也就是要么是true,要么是false。
 (4)逻辑运算符
  逻辑与运算符 &
  
  第一个条件    第二个条件     结果
  true          true      true
  false         true           false
  true          false          false
  false         false          false

  简单记:左右两边同时为true,结果为true。

  逻辑或运算符 |
  
  第一个条件    第二个条件     结果
  true          true      true
  false         true           true
  true          false          true
  false         false          false

  简单记:左右两边只要有一个结果是true,结果为true。
  
  逻辑异或运算符 ^
  
  第一个条件    第二个条件     结果
  true          true      false
  false         true           true
  true          false          true
  false         false          false

  简单记:左右两边相同,结果为false。
  
  逻辑非运算符 !
  
  !true  false
  !false true
         !!true true
  
  短路与:

  &:左边无论什么结果,右边都执行。
  &&:左边为false,右边不执行,结果为false。


  短路或:
  |:左边无论什么结果,右边都执行。
  ||:左边为true,右边不执行,结果为true。
  
 (5)位运算符2<<3
  <<一个正整数向左移动几位就乘以2的几次幂
  >>一个正整数向右移动几位就除以2的几次幂,高位是0就补0,高位是1就补1
  >>>无符号右移无论最高位的符号位是0还是1,用无符号右移后高位符号位都是补0
 (6)三元运算符
  A :(条件表达式)?表达式1:表达式2;
   **如果条件为true,运算后的结果是表达式1;
   **如果条件为false,运算后的结果是表达式2;
  B:条件运算符运算完之后一定有一个结果
  int x,y,z;
  x = 5;
  y = 10;
  z = (x > y) ? x : y;
判断结构
三种格式:
第一种:if(条件表达式){
    执行语句;
       }
    System.out.println();
   
第二种:if(条件表达式){ //if else和三元运算符的区别
  执行语句;  //三元运算符是一个运算符号,ifelse是一个语句
       }else{   //三元运算符运算后必须有结果,而且不能有语句
      //ifelse可以没有结果,可以有语句
                执行语句; 
       }
  
第三种:if(条件表达式){
               执行语句;
       }else if (条件表达式){
              执行语句;
       }else{
              执行语句;
       }
  
2:switch
 格式:
 int x = 10;
 switch (表达式){//byte,short,int,char,String 枚举
 
 case 表达式里对应的值:
  执行语句;
 //break;
 case 表达式里对应的值:
  执行语句;
 break;
 ......
 default:
  执行语句;
 break;//最后一句的break可写可不写,因为程序已经执行到了末尾
 }
 
 重点:switch 结束只有两种情况
 1,当程序执行过程中遇到了break
 2,当程序执行到了末尾处
 应用 switch需要注意的两个细节
 1,当switch表达式的值与其中一个case匹配的时候,这个case里没有写break;语句,那么程序会继续执行下个case里
 的执行语句,不会再对case值进行判断,应用于当几个case里的值所要执行的语句都一样的时候,我们可以不写break
 
 
 2,当我们把 default 不是写在最后,default 里面还没有写break的是时候,switch里的表达式与各个case里
 的值都不匹配的时候,上面两个条件同时满足的话,程序在default里执行完了还会再去执行case里的语句
 
3:
 (1)while循环
 格式:
 while (条件表达式){
  循环体;
  控制循环次数;
 }
 
 (2)do while 循环
 格式:
 do{
  循环体;
  控制循环次数
 }
 while (条件表达式);
 
 while和do while的区别:
 dowhile语句会先执行循环体,再去判断条件,也就是说无论条件是否满足他都至少要执行一次循环体,先执行
 再判断
 while 先判断条件,只要条件不满足就不在执行循环体了,先判断,再执行.

 (3)for
 格式:
 for(初始化表达式1;循环条件表达式2;循环后的操作表达式4){
  执行语句;(循环体)3
 }

 (4)for 的嵌套循环,建议做题的时候就弄个双层嵌套就可以,不要弄太多层,影响效率
 格式:
 for(初始化表达式;循环条件表达式;循环后的操作表达式){//这是外层循环
  执行语句;(循环体)
  //下面是内存循环
  for(初始化表达式;循环条件表达式;循环后的操作表达式){
  执行语句;(循环体)
  }
 }

 
4:continue和break
 a,这两个语句离开应用范围,存在是没有意义的。
 b,这两个语句单独存在下面都不可以有语句,因为执行不到。
 c,continue语句是结束本次循环继续下次循环。
 d,标号的出现,可以让这两个语句作用于指定的范围。

语句的最后总结
 
  A:当对某几个值进行判断的时候,可以使用if语句,或者switch语句。
     建议使用switch。但是,使用switch要注意,它只能操作六种类型的值,byte,short,int,char,String,枚举。
     如果是六种以外的值,需要使用if。
  B:如果对数据区间进行判断,或者对运算结果是boolean类型的进行判断,用if语句。
  C:当需要某些语句执行很多次的时候,使用循环结构。如果定义变量只为循环增量存在时,可以使用for语句。
           如果对一个条件进行一次判断使用if,如果对该条件进行多次判断,使用while
  D:如果要结束循环,可以控制循环条件,或者通过break语句完成。
    如果要控制循环的流程,是否该继续执行,可以通过continue或者break来完成。
  E:break结束当前所在循环。continue结束本次循环,进入下一次循环。
函数
  (1)函数就是定义在类中的具有特定功能的一段独立小程序。函数也称为方法。
  (2)函数的格式 修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…) {
   执行语句;
   return 返回值;
  }
  public static int add(int a,int b)//a =3,b =5
  A:修饰符 后面会重点讲。public static
  B:返回值类型 这个特定的功能完成后,需要返回一个结果。这个地方就是返回结果的类型。
  C:函数名 为了方便使用这个函数,给它起个名字。这个名字要符合标识符命名规则。
  D:参数类型 形式参数的数据类型
   **:形式参数 自定义的接收方
   **:实际参数 发出方add(3,5)
  E:执行语句 那么这个语句是由多条语句组成。
  F:return 这个功能执行完以后,需要有一个返回值,那么这个值有关键字return带回。
 (3)函数的特点
  A:一般函数只有被调用后,才执行。
  B:void 表示没有返回。在这个函数的结尾可以不写return。
   **其实jvm会自动的结尾处加上return;
 (4)如果定义自己的函数 两个明确
  A:明确该功能的结果 其实就是该功能的返回类型。
  B:明确该功能的参数 其实就是明确该功能中是否需要未知内容(形式参数)参与运算。明确未知内容的类型和个数。
 (5)函数的重载
  A:函数名相同,参数列表不同。 
   **参数类型不同。int add(int i)      void add(double d)
   **参数个数不同。add(int a,int b);add(int a,int b,int c)
   **参数顺序不同  print(String name, int age) //参数顺序不同的重载是可以存在的,但是没有什么实际义
            print(int age,String name)
  B:特点:与返回值类型无关,只看参数列表。
  C:好处:便于阅读,优化程序设计。

数组
 (1)同一种类型数据的集合。其实数组就是一个容器。               int[] arr = new int[5];
  A:只要是容器,就得重点掌握。
 (2)数组的好处
  int[] arr = new int[5];
  arr[3] = 10;
  A:可以自动给数组中的元素从0开始编号,方便操作这些元素。
 (3)数组的定义格式
  A:当不明确数组中的元素时
   **举例 int[] arr = new int[3];//动态初始化
   arr[0] = 3;
  B:当明确数组中的元素时
   **举例 int[] arr = new int[]{1,2,3,4,5};//静态初始化
       int[] arr = {1,2,3,4,5};
    
 (4)什么时候使用数组?
  A:当要操作的同种数据类型的数据是多个的时候,你就得想着先把这些数据用数组进行存储。
 (5)内存图
  A:栈
   **存储的是局部变量(在函数中定义的变量)。
   **变量被使用完后,立即自动释放。
  B:堆
   **存储的是实体(数组和对象)。
   **实体:new出来的东西,可以存放很多数据的东西。
    ***class定义一个类。
   **堆内存数据的特点
    ***每个实体都有内存地址
    ***堆内存中的变量都有默认初始化值
     ****int --> 0
     ****double --> 0.0
     ****boolean --> false
     ****char --> '\u0000' 空字符,unicode编码。
    ***当实体不在被使用的时候,会在jvm空闲的时候,
       通过java垃圾回收机制使其自动释放。
  C:方法区 后面讲。
  D:本地方法区 调用是Windows系统底层资源,我们不用考虑。
  E:寄存器 和CPU相关。我们不用考虑。
 (6)操作数组最常见的问题
  A:当你访问到数组中的最后一个元素时,还想继续访问,这个时候,会发生角标越界异常。
      **ArrayIndexOutOfBoundsException
   **举例 int[] arr = new int[3];
          System.out.println(arr[3]);
  B:当数组不在指向某个实体时,你还继续访问,就会发生空指针异常。
   **NullPointerException
   **举例 int[] arr = new int[3];
          arr = null;
          System.out.println(arr[1]);
 (7)常见的数组的操作
  记住:对数组的操作,一定要从角标入手。
  A:遍历操作
   
  B:获取最值
   
  C:排序(选择和冒泡)
  
  D:传递参数
   
数组初始化过程
 <1> 主函数进栈,然后在main()中有一个数组的引用arr
 <2> 在堆内存中开辟空间,分配内存地址值
 <3> 在堆内存中建立数组对象,并进行默认初始化
 <4> 如果有显示初始化值的,对它进行显示初始化
 <5> 将内存地址赋给栈内存中的arr变量

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值