一、基本数据类型
概念
ASCII码:A: 65,a: 97
Scanner scanner = new Scanner(System.in);
char y = scanner.next().charAt(0);//charAt(0)接收字符串的第一个字符
隐示数据类型转换
也叫自动类型转换
占用字节小的可以直接保存到占用字节大的变量中
byte b = 100;
int x;
x = b
显示数据类型转换
也叫强制类型转换
二、引用数据类型
类class
接口interface
数组Array
三、运算符
3.1 位运算符
位运算符作用在所有的位上,并且按位运算
假设a = 60,b = 13;它们的二进制格式表示将如下:
A = 0011 1100
B = 0000 1101
符号 | 描述 | 例子 |
---|---|---|
& | 如果相对应位都是1,则结果为1,否则为0 | 00001100 |
竖线 | 如果对应位都是0,则结果为0,否则为1 | 00111101 |
^ | 如果相对应位值相同,则结果为0,否则为1 | 00110001 |
~ | 按位取反 | ~A: 11000011 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A<<2: 11110000 ,B<<2: 00110100 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | A>>2: 1111,B>>2: 01000011 |
<<< | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A<<<2: 00001111 |
3.2 条件运算符
条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
variable x = (expression) ? value if true : value if false
例子:
public class Test {
public static void main(String[] args){
int a , b;
a = 10;
// 如果 a 等于 1 成立,则设置 b 为 20,否则为 30
b = (a == 1) ? 20 : 30;
System.out.println( "Value of b is : " + b );
// 如果 a 等于 10 成立,则设置 b 为 20,否则为 30
b = (a == 10) ? 20 : 30;
System.out.println( "Value of b is : " + b );
}
}
Value of b is : 30
Value of b is : 20
3.3 instanceof 运算符
该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。
( Object reference variable ) instanceof (class/interface type)
如果运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真。
String name = “James”;
boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真
四、循环练习题
1.打印以下图形
*
**
***
****
*****
******
for (int i = 1;i <= 6;i++){
for (int j = 1;j <= i;j++){
System.out.print("*");
}
System.out.println("");
}
2.打印以下图形
a
bb
ccc
dddd
eeeee
char c = 'a';
for (int i = 0;i < 5;i++){
for (int j = 0;j <= i;j++){
System.out.print((char)(c + i));
}
System.out.println("");
}
3.求所有三位数的水仙花数。
“水仙花数” 指的是一个三位数,个位、十位、百位的数字立方和等于原数本身。
for (int i = 100;i < 1000;i++){
int a = i % 10;
int b = i / 10 % 10;
int c = i / 100 % 10;
if (a * a * a + b * b * b + c * c * c == i){
System.out.println(i + "是水仙花数");
}
}
4.打印九九乘法表
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
for (int i = 1;i <= 9;i++){
for (int j = 1;j <= i;j++){
System.out.print(i + "*" + j + "=" + i * j + "\t");
}
System.out.println("");
}
5.求10!+9!+8!+…+1! = ?
int a = 1,sum = 0;
for (int i = 1;i <= 10;i++){
for (int j = 1;j <= i;j++){
a = a * j;
}
sum = sum + a;
a = 1;
}
System.out.println(sum);
6.求1-100所有质数的和
质数:只能被1和它本身整除。1不是质数,也不是合数。
int sum = 0;
for (int i = 2;i < 100;i++){
int k = 1;
for (int j = 2;j < i;j++){
if (i % j == 0){
k = 0;
break;
}
}
if (k == 1){
sum = sum + i;
}
}
System.out.println(sum);
7.已知一只公鸡5块钱,母鸡3块钱,小鸡1块钱3只,
问100块钱买100只鸡有哪些方案?钱花完
for (int i = 0;i < 20;i++){
for (int j = 0;j < 33;j++){
int k = 100 - i - j;
if (5 * i + 3 * j + k/3 == 100 && i + j + k == 100){
System.out.println(i + "只公鸡," + j + "只母鸡," + k + "只小鸡");
}
}
}