Java语法基础学习DayTwo
一、数据类型补充问题
数据类型的自动转换等级: 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的更多相关文章
- Java语法基础学习DayEighteen(常用类)
一.String类 1.特点 String代表不可变的字符序列,底层用char[]存放. String是final的. 2.内存解析 3.常用方法 int length() char charAt(i ...
- Java语法基础学习DaySeven
---恢复内容开始--- 一.包装类——Wrapper 1.定义:针对八种基本数据类型定义相应的引用类型——包装类(封装类) boolean——Boolean byte——Byte ...
- Java语法基础学习DaySix
一.JavaBean——可重用组件 1.JavaBean是指符合以下标准的Java类: (1)类是公共的 (2)有一个无参的公共的构造器 (3)有属性,且有对应的get.set方法 2.好处 用户可以 ...
- Java语法基础学习DayThree
一.流程控制语句补充 1.switch语句 格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体 ...
- Java语法基础学习DayTwentyOne(网络编程)
一.IP地址和端口号 1.作用 通过IP地址,唯一的定位互联网上一台主机. 端口号标识正在计算机上运行的进程,不同进程有不同的端口号,被规定为一个16位的整数0~65535,其中0~1023被预先定义 ...
- Java语法基础学习DayTwenty(反射机制续)
一.Java动态代理 1.代理设计模式的原理 使用一个代理将对象包装起来, 然后用该代理对象取代原始对象. 任何对原始对象的调用都要通过代理. 代理对象决定是否以及何时将方法调用转到原始对象上. 2. ...
- Java语法基础学习DayNineteen(反射机制)
一.Refection定义 1.概述 Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性 ...
- Java语法基础学习DaySeventeen(多线程续)
一.线程的特点 1.线程的分类 java中的线程分为两类:守护线程和用户线程.唯一的区别是判断JVM何时离开. 守护线程是用来服务用户线程的,通过在start()方法前调用Thread.setDaem ...
- Java语法基础学习DaySixteen(多线程)
一.多线程的创建 1.作用 程序需要同时执行两个或多个任务时需要多线程. 程序需要实现需要等待的任务时,如用户输入.文件读写操作.网络操作.搜索等,需要多线程. 需要一些后台运行的程序时,需要多线程. ...
随机推荐
- Android--------内存泄露工具LeakCanary
什么是内存泄露 一些对象有着有限的生命周期.当这些对象所要做的事情完成了,我们希望他们会被回收掉.但是如果有一系列对这个对象的引用,那么在我们期待这个对象生命周期结束的时候被收回的时候,它是不会被回收 ...
- android------Eclipse Memory Analyzer (MAT)
简单介绍 MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速.功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗. 使用内 ...
- 电脑用U盘启动
除了根据提示按DEL或者F2进入到BIOS界面更改设置之外. 还可以在开机时按F8或F12进入到引导界面,可直接选择USB. 当把登录用户登录,其他用户都被禁用时,电脑登不进去.要制作启动U盘,进入到 ...
- mac下 配置homebrew 和java home
1.terminal下输入 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/insta ...
- matlab:统计矩阵中某元素的个数
三种统计方法: A=ceil(rand(,)*); a=; %第一种 sum(A(:)==a): %第二种 length(find(A==a); %第三种 logical=(A=a); sum(log ...
- SQLServer2012数据库降级至SQLServer2008R2的方法
一. 背景 因为对方的客户的服务器安装的数据版本2012,公司开发同事需要客户数据库的备份数据,但是公司数据版本是2008R2的,无法还原. 由于2012备份无法直接还原至2008R2(MSSQ ...
- flask-系统介绍及环境搭建1
1.系统介绍 前台首页-电影筛选-电影列表- 播放详情-评论:收藏-搜索-注册-登录-会员中心(修改会员资料,查看评论记录,登录日志,收藏电影). 后台-标签-电影管理-预告-会员-评论-收藏-日志- ...
- Nginx+Tomcat集群配置
Nginx+Tomcat集群配置 一台虚拟机作为Nginx服务 两太虚拟机配置Tomcat+jdk环境 Nginx测试 启动: cd usr/local/nginx/sbin ./nginx ---& ...
- js修改样式
添加.删除class: $("#id").addClass("someClass"); $("#id").removeClass(" ...
- java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0). at co ...