基本的有:加减乘除余+-*/% 自增,自减 ++ -- 余,取余,取模 %
如果有任何运算单元的长度超过int,那么运算结果就按照最长的长度计算
如果任何运算单元的长度都不超过int,那么运算结果就按照int来计算
byte a = 1;
byte b= 2;
a+b -> int 类型
基础笔试面试题1
public class HelloWorld {
public static void main(String[] args) {
byte a = 1;
byte b= 2;
byte c = (byte) (a+b); //虽然a b都是byte类型,但是运算结果是int类型,需要进行强制转换
int d = a+b;
}
}
自增 自减操作符置前以及置后的区别
i++; 先取值,再运算
++i; 先运算,再取值
基础笔试面试题2
public class HelloWorld {
public static void main(String[] args) {
int i = 5;
System.out.println(i++); //输出5
System.out.println(i); //输出6
int j = 5;
System.out.println(++j); //输出6
System.out.println(j); //输出6
}
}
基础笔试面试题3
结果为18
public class HelloWorld {
public static void main(String[] args) {
int i = 1;
int j = ++i + i++ + ++i + ++i + i++;
//i值 2 3 4 5 6
//取值 2 2 4 5 5
System.out.println(j);
}
}
练习-------BMI
import java.util.Scanner;
public class HelloWorld {
public static void method1() {
int i = 1;
int j = ++i + i++ + ++i + ++i + i++;
System.out.println(j);
}
public static void main(String[] args) {
method1();
Scanner s = new Scanner(System.in);
System.out.println("请输入身高(m):");
float height = s.nextFloat();
System.out.println("请输入体重(kg):");
float weight = s.nextFloat();
float BMI = weight/(height*height);
System.out.println("当前的BMI是:"+ BMI );
}
}
比较两个变量之间的关系
练习:判断两个值之间的关系syso(" " + (a>b));
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int a = s.nextInt();
System.out.println("第一个整数:"+a);
int b = s.nextInt();
System.out.println("第二个整数:"+b);
System.out.println("比较"+a+">"+b+":"+(a>b));
System.out.println("比较"+a+">="+b+":"+(a>=b));
System.out.println("比较"+a+"<"+b+":"+(a
逻辑运算符:&长路与 && | || !取反 ^异或
无论长路与还是短路与
两边的运算单元都是布尔值
都为真时,才为真
任意为假,就为假
区别
长路与 两侧,都会被运算
短路与 只要第一个是false,第二个就不进行运算了
无论长路或还是短路或
两边的运算单元都是布尔值
都为假时,才为假
任意为真,就为真
区别
长路或 两侧都会被运算
短路或 只要第一个是true的,第二个就不进行运算了
取反!
真变为假
假变为真
异或^
不同,返回真
相同,返回假
基础笔试面试题4
false i=3
public class HelloWorld {
public static void main(String[] args) {
int i = 1;
boolean b = !(i++ == 3) ^ (i++ ==2) && (i++==3);
//i值 2 3
//表达式 false true
// true ^ true
// false
System.out.println(b);
System.out.println(i);
}
}
public class HelloWorld {
public static void main(String[] args) {
int i =-10;
//-10的二进制是11111111111111111111111111110110
//第一位是1,即符号位,代表这是一个负数
System.out.println(Integer.toBinaryString(i));
//对于正数, 带符号右移 >> 会把所有的位右移,并在最前面补0
//对于负数, 带符号右移 >> 会把所有的位右移,并在最前面补1
//-10带符号右移1位,移动后前面补齐1
//得到11111111111111111111111111111011
//因为第一位是1,所以依然是一个负数,对应的十进制是-5
int j = i>>1;
System.out.println(Integer.toBinaryString(j));
System.out.println(j);
//-10无符号向右移1位,符号位也会向右移,第一位就变成了0
//得到01111111111111111111111111111011,对应的十进制是2147483643
int k = i>>>1;
System.out.println(Integer.toBinaryString(k));
System.out.println(k);
}
}
赋值操作的操作顺序是从右到左 (先运算,后赋值)
+=即自加
i+=2;
等同于
i=i+2;
3 int i = 1; i+=++i;即1+2=3
int i;
int j = 6;
Scanner scanner=new Scanner(System.in);
System.out.println("今天是周几?");
i=scanner.nextInt();
String k = i < j ? "今天是工作日" :"今天是周末";
System.out.println(k);
基础笔试面试题5
使用scanner读取字符串 s.nextLine();
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String a = s.nextLine();
System.out.println("读取的字符串是:"+a);
}
}
基础笔试面试题6
读取了整数后,接着读取字符串
需要注意的是,如果在通过nextInt()读取了整数后,再接着读取字符串,读出来的是回车换行:"\r\n",因为nextInt仅仅读取数字信息,而不会读取回车换行"\r\n".
所以,如果在业务上需要读取了整数后,接着读取字符串,那么就应该连续执行两次nextLine(),第一次是取走回车换行,第二次才是读取真正的字符串
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int i = s.nextInt();
System.out.println("读取的整数是"+ i);
String rn = s.nextLine();
String a = s.nextLine();
System.out.println("读取的字符串是:"+a);
}
}
switch可以使用byte,short,int,char,String,enum
注: 每个表达式结束,都应该有一个break;
注: String在Java1.7之前是不支持的, Java从1.7开始支持switch用String的,编译后是把String转化为hash值,其实还是整数
注: enum是枚举类型
基础笔试面试题7
阶乘
import java.util.Scancer;
public class Rrr
{
public static void main(String [] args)
{
Scancer s=new Scancer(System.in);
System.out.println("请输入一个整数:");
int a =s.nextint();
int b =1;
while (1
import java.util.Scanner;
public class Hero {
public static void main(String[] args) {
System.out.println("请输入一个整数:");
Scanner s=new Scanner(System.in);
int n=s.nextInt();
int m=n;
do{
n--;
m=m*n;
}while(n>1);
System.out.println(m);
}
}
public class JieChengTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
System.out.println(method(i));
}
public static int method(int i){
if (i == 1){
return 1;
}
return i*method(i-1);
}
}
continue
继续下一次循环
continue:(只打印单数)
public class HelloWorld {
public static void main(String[] args) {
//打印单数
for (int j = 0; j < 10; j++) {
if(0==j%2)
continue; //如果是双数,后面的代码不执行,直接进行下一次循环
System.out.println(j);
}
}
}
break只能结束当前循环
基础笔试面试题8
使用boolean变量结束外部循环
public class HelloWorld {
public static void main(String[] args) {
boolean breakout = false; //是否终止外部循环的标记
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
System.out.println(i + ":" + j);
if (0 == j % 2) {
breakout = true; //终止外部循环的标记设置为true
break;
}
}
if (breakout) //判断是否终止外部循环
break;
}
}
}
使用标签结束外部循环
public class HelloWorld {
public static void main(String[] args) {
//打印单数
outloop: //outloop这个标示是可以自定义的比如outloop1,ol2,out5
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
System.out.println(i+":"+j);
if(0==j%2)
break outloop; //如果是双数,结束外部循环
}
}
}
}
待练习
黄金分割点:
寻找某两个数相除,其结果 离黄金分割点 0.618最近
分母和分子不能同时为偶数
分母和分子 取值范围在[1-20]
水仙花数:
水仙花数定义:
1. 一定是3位数
2. 每一位的立方,加起来恰好是这个数本身,比如153=1*1*1+5*5*5+3*3*3
寻找所有的水仙花数
小学算术题:多层循环嵌套解决