一、数据类型补充问题

数据类型的自动转换等级: byte,short,char -- int -- long -- float -- double

long是8个字节,float是4个字节,为什么是这么转换的?

理由:它们底层的存储结构不同;float表示的数据范围比long要大。

二、运算符

1.算术运算符 +,-,*,/,%,++,--

%:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。

+:可以是加法、正号、字符串连接符

2.赋值运算符 =,+=,-=,*=,/=,%=

注意:扩展的赋值运算符隐含了数据类型的自动强制转换。

面试题:
short s = 1;
s = s + 1;//short类型变量参与运算,自动转换为int类型,没有将int强制转换为byte,所以报错

short s = 1;
s += 1;//+=隐含了强制转换
请问上面的代码哪个有问题?

第一个s有问题,第二个没有。原因看注释。

3.比较运算符 ==,!=,>,>=,<,<=

注意:最终都返回boolean类型

4.逻辑运算符 &,|,^,!,&&,||

逻辑运算符除了 ! 外都用于连接boolean类型的式子

&:只有两边都为true结果是true。否则就是false

|:只要两边都为false结果是false,否则就是true

^:异或:两边结果一样,就为false。

     两边结果不一样,就为true.

& 和 &&区别: & :无论左边结果是什么,右边都参与运算。

       &&:短路与,如果左边为false,那么右边不参数与运算。

| 和|| 区别: |:两边都运算。

       ||:短路或,如果左边为true,那么右边不参与运算。

5.位运算符  &  |  ^  <<  >>   >>>(无符号右移) ~(反码)

位运算符即对二进制进行运算

注意:^:一个数据针对另一个数据位异或两次,该数不变

面试题:

1.对两个变量的数据进行互换。不需要第三方变量。

第一种方法:利用一个数据针对另一个数据位异或运算两次,该数不变。

a = a ^ b;

b = a  ^ b;//等价于a ^ b ^ b = a

a = a ^ b;//等价于a ^ b ^ a = b

第二种方法:变量相加

a = a + b;

b = a - b;

a = a - b;

//也可以用一句话搞定: b = (a+b) - (a=b);

2.高效算出2*8。

答案:2<<3

6.三目运算符

格式:比较表达式?表达式1:表达式2;

三、流程控制语句

1.选择结构 if、 switch

2.循环结构 for 、while 、do...while

注意:如果需要定义变量控制循环次数。建议使用for。因为for循环完毕,变量在内存中释放。

Java语法基础学习DayTwo的更多相关文章

  1. Java语法基础学习DayEighteen(常用类)

    一.String类 1.特点 String代表不可变的字符序列,底层用char[]存放. String是final的. 2.内存解析 3.常用方法 int length() char charAt(i ...

  2. Java语法基础学习DaySeven

    ---恢复内容开始--- 一.包装类——Wrapper 1.定义:针对八种基本数据类型定义相应的引用类型——包装类(封装类) boolean——Boolean          byte——Byte ...

  3. Java语法基础学习DaySix

    一.JavaBean——可重用组件 1.JavaBean是指符合以下标准的Java类: (1)类是公共的 (2)有一个无参的公共的构造器 (3)有属性,且有对应的get.set方法 2.好处 用户可以 ...

  4. Java语法基础学习DayThree

    一.流程控制语句补充 1.switch语句 格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体 ...

  5. Java语法基础学习DayTwentyOne(网络编程)

    一.IP地址和端口号 1.作用 通过IP地址,唯一的定位互联网上一台主机. 端口号标识正在计算机上运行的进程,不同进程有不同的端口号,被规定为一个16位的整数0~65535,其中0~1023被预先定义 ...

  6. Java语法基础学习DayTwenty(反射机制续)

    一.Java动态代理 1.代理设计模式的原理 使用一个代理将对象包装起来, 然后用该代理对象取代原始对象. 任何对原始对象的调用都要通过代理. 代理对象决定是否以及何时将方法调用转到原始对象上. 2. ...

  7. Java语法基础学习DayNineteen(反射机制)

    一.Refection定义 1.概述 Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性 ...

  8. Java语法基础学习DaySeventeen(多线程续)

    一.线程的特点 1.线程的分类 java中的线程分为两类:守护线程和用户线程.唯一的区别是判断JVM何时离开. 守护线程是用来服务用户线程的,通过在start()方法前调用Thread.setDaem ...

  9. Java语法基础学习DaySixteen(多线程)

    一.多线程的创建 1.作用 程序需要同时执行两个或多个任务时需要多线程. 程序需要实现需要等待的任务时,如用户输入.文件读写操作.网络操作.搜索等,需要多线程. 需要一些后台运行的程序时,需要多线程. ...

随机推荐

  1. LeetCode--459--重复的字符串

    问题描述: 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000. 示例 1: 输入: "abab" 输出: T ...

  2. android -------- Data Binding的使用 RecyclerView

    今天来说说DataBinding在列表RecyclerView中的使用 列表绑定 App中经常用到列表展示,Data Binding在列表中一样可以扮演重要的作用,直接绑定数据和事件到每一个列表的it ...

  3. MySQL视图(view)

    一.基本概念 视图是一个虚拟表,是sql的查询结果,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据,在使用视图时动态生成.视图的数据变化会影响到基表,基表的数据变化也会影响到视图 ...

  4. 《剑指offer》总结一

    目录 1.二维数组中的查找(223ms) 2.替换空格(24ms) 3.从尾到头打印链表(22ms) 4.重建二叉树(37ms) 5.用两个栈实现队列 1.二维数组中的查找(223ms) 题目描述: ...

  5. selenum threding多线程运行 实例

    1.配置相关驱动 chrome驱动 下载驱动,配置到环境变量中 如 xxxxchrome.jar 将其新建目录c:/driver---将目录 配置到环境变量 firefox驱动 下载驱动,将gecko ...

  6. luffy之多条件登录与极验滑动验证码

    多条件登录 JWT扩展的登录视图,在收到用户名与密码时,也是调用Django的认证系统中提供的authenticate()来检查用户名与密码是否正确. 我们可以通过修改Django认证系统的认证后端( ...

  7. layui 表格图片放大

    1. 表格塞图片 ,{title: '图片', width:120, templet: function(d) { return '<div onclick="show_img(thi ...

  8. Leetcode 969. 煎饼排序

    969. 煎饼排序  显示英文描述 我的提交返回竞赛   用户通过次数134 用户尝试次数158 通过次数135 提交次数256 题目难度Medium 给定数组 A,我们可以对其进行煎饼翻转:我们选择 ...

  9. 利用sqlldr从MySQL导出一张表数据到Oracle

    根据业务需求,需要从MySQL库中同步一张表tap_application到Oracle中,下面是记录的导入过程. 1. 查看MySQL表结构 desc tap_application; +----- ...

  10. 【LeetCode】数组移除元素

    链表等复杂数据结构用多了,简单的数组操作也不能遗忘! 1. 给定一个有序数组,移除所有重复元素并返回新的数组长度,不能分配额外数组的内存空间. e.g. 给定输入的数组 = [1,1,2],函数应当返 ...