&是位操作符,“按位与”;1转成二进制 01;2转成二进制 10;a&b=00转成十进制为0。
位运算符有:&(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。优先级从高到低,依次为~、&、^、|。
按位与运算有两种典型用法,一是取一个位串信息的某几位,如以下代码截取x的最低7位:x &0177。二是让某变量保留某几位,其余位置0,如以下代码让x只保留最低6位:x = x &077。
Java 的表达式就是用运算符连接起来的符合Java 规则的式子,运算符的优先级决定了表达式中运算执行的先后顺序。
扩展资料:
整数算术运算的异常是由于除零或按零取模造成的。它将引发一个算术异常。下溢产生零,上溢导致越界。例如:加1超过整数最大值,取模后,变成最小值。
一个op=赋值运算符,和上表中的各双目整数运算符联用,构成一个表达式。整数关系运算符<,>,<=,>=,==和!=产生boolean类型的数据。
import java.util.Scannerpublic class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in)
int n
System.out.print("请输入小于100的正整数:")
while ((n = scanner.nextInt()) != 1) {
if (n < 1 || n >= 100) {
System.out.print("输入有误,请重新输入:")
continue
}
if (n % 9 == 0) {
System.out.println("输入的数是" + n + ",能被9整除")
} else {
System.out.println("输入的数是" + n + ",不能被9整除")
}
System.out.print("请继续输入:")
}
System.out.println("over")
}
}
JAVA 的列表 方式 迅雷的 是执行任务后定时排队列表以下思路 ,
1)java.util.Timer.
2)ServletContextListener.
3)org.springframework.scheduling.timer.ScheduledTimerTask
1)java.util.Timer
这个方法应该是最常用的,不过这个方法需要手工启动你的任务:
Timer timer=new Timer()
timer.schedule(new ListByDayTimerTask(),10000,86400000)
这里的ListByDayTimerTask类必须extends TimerTask里面的run()方法。
2)ServletContextListener
这个方法在web容器环境比较方便,这样,在web server启动后就可以
自动运行该任务,不需要手工操作。
将ListByDayListener implements ServletContextListener接口,在
contextInitialized方法中加入启动Timer的代码,在contextDestroyed
方法中加入cancel该Timer的代码;然后在web.xml中,加入listener:
<listener>
<listener-class>com.sysnet.demo.util.MyTimerTask</listener-class>
</listener>
3)org.springframework.scheduling.timer.ScheduledTimerTask
如果你用spring,那么你不需要写Timer类了,在schedulingContext-timer
.xml中加入下面的内容就可以了:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="timer" class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref local="MyTimeTask1"/>
</list>
</property>
</bean>
<bean id="MyTimeTask" class="com.qq.timer.ListByDayTimerTask"/>
<bean id="MyTimeTask1" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask">
<ref bean="MyTimeTask"/>
</property>
<property name="delay">
<value>10000</value>
</property>
<property name="period">
<value>86400000</value>
</property>
</bean>
</beans>
下面给出方法2的一个例子供大家参考:
Java代码:
import java.util.Timer
import javax.servlet.ServletContextEvent
import javax.servlet.ServletContextListener
public class MyTimerTask implements ServletContextListener{
private Timer timer = null
@Override
public void contextDestroyed(ServletContextEvent event) {
// TODO Auto-generated method stub
timer.cancel()
event.getServletContext().log("定时器销毁")
System.out.println("停止备份程序……")
}
@Override
public void contextInitialized(ServletContextEvent event) {
//在这里初始化监听器,在tomcat启动的时候监听器启动,考试,大提示可以在这里实现定时器功能
timer = new Timer(true)
event.getServletContext().log("定时器已启动")//添加日志,可在tomcat日志中查看到
timer.schedule(new exportHistoryBean(event.getServletContext()),0,5*1000)//调用exportHistoryBean,0表示任务无延迟,5*1000表示每隔5秒执行任务,60*60*1000表示一个小时;
}
}
import java.util.Calendar
import java.util.TimerTask
import javax.servlet.ServletContext
public class exportHistoryBean extends TimerTask
{
private static final int C_SCHEDULE_HOUR = 0
private static boolean isRunning = false
private ServletContext context = null
public exportHistoryBean(ServletContext context)
{
this.context = context
}
@Override
public void run()
{
Calendar c = Calendar.getInstance()
if(!isRunning)
{
if(C_SCHEDULE_HOUR == c.get(Calendar.HOUR_OF_DAY))
{
isRunning = true
context.log("开始执行指定任务")
isRunning = false
context.log("指定任务执行结束")
}
else
{
context.log("上一次任务执行还未结束")
}
}
}
}
web.xml里加入一下代码:
<listener>
<listener-class>com.sysnet.demo.util.MyTimerTask</listener-class>
</listener>