1. Java基本数据类型
1.1. 逻辑型
boolean类型适于逻辑运算,一般用于程序流程控制
boolean类型数据只允许取值true或false
不可以0或非0的整数替代true和false
1.2. 字符型
char型数据用来表示通常意义上“字符”
字符常量是用单引号括起来的单个字符
char c = 'A'; //而字符串String 则需要双引号
Java字符采用Unicode编码,每个字符占两个字节,
可用十六进制编码形式表示
char c1 = '\u0061';
Java语言中还允许使用转义字符''来将其后的字符转变为其它的含义
char c2 = '\n'; //代表换行符new line
1.3. 整数类型
跟C语言几乎一致,切java8官方文档有详细小代码进行测试。
Java各整数类型有固定的表数范围和字段长度,而不受具体操作系统的影响,以保证Java程序的可移植性
Java中没有“无符号数”
可以用long来处理无符号整数(uint)
逻辑运算符
!逻辑非
& 逻辑与
| 逻辑或
^ 逻辑异或
&& 短路与
|| 短路或
&& 第一个操作数为假则不判断第二个操作数
|| 第一个操作数为真则不判断第二个操作数
•左移
"a<<b; "将二进制形式的a逐位左移b位,最低位空出的b位补0;
•带符号右移
"a>>b; "将二进制形式的a逐位右移b位,最高位空出的b位补原来的符号位;
•无符号右移
"a>>>b;"将二进制形式的a逐位右移b位,最高位空出的b位补0。
•移位运算符应用举例
bitchange.png
2. 循环案例
- 求100-200以内的质数
主要就是注意需要两个循环,
外循环是被除数divisor,步长是2;
内循环是除数dividend,非质数时进行下一个外循环。
class PrimeNumber {
public static void main(String[] args) {
outer:
for(int divisor = 101;divisor < 200; divisor +=2){
for(int dividend =2; dividend < divisor;dividend ++){
if(divisor % dividend == 0) continue outer;
}
System.out.println(" "+ divisor );
}
}
}
3. 数组
- 数组定义与为数组元素分配空间分开进行
int[] a = new int[3];
a[0] = 3;
a[1] = 9;
a[2] = 8;
-
Java语言中声明数组时不能指定其长度(数组中元素的个数),例如:
•int a[5]; //非法 -
数组是引用类型
int[ ] a = new int[5];
这里a 只是一个引用 -
静态初始化:
在定义数组的同时就为数组元素分配空间并赋值。
int[] a = { 3, 9, 8}; -
数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。例如:
( 数值类型是0,引用类型是null )
//input
class test{
public static void main( String args[] ){
int[] a = new int[5];
for(int index = 0; index < a.length;index++)
System.out.println(a[0]);
}
}
//output
0
0
0
0
0
//可以写成只读的for遍历循环
class test{
public static void main( String args[] ){
int[] a = new int[5];
for(int value : a)
System.out.println(value);
}
}
- 在1-36中随机挑选7个数字。
a. 考虑生成随机数,Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间。
b. 所以要生成1~36的随机数x,需要考虑将其扩大36倍且加1,加1用于向下取整。 x = (int) (Math.Random() * 36 + 1)
c. 不选重复的随机数,需要一个for循环做对比;还需要while不断给oneNum赋值,因为当值相同时需要重新赋值。
//没查重就会发生错误
class Rnd36Pick7 {
public static void main(String[] args) {
int[] results = new int[7];
for(int i=0 ; i<7 ; i++){
results[i] = (int)(Math.random() * 36 + 1);
System.out.println(results[i]);
}
}
}
//correct code
class rndTest {
public static void main(String[] args) {
int[] results = new int[7];
for(int i=0 ; i < results.length;i++){
oneNum:
while (true){
results[i] = (int)(Math.random() * 36 + 1);
for(int j= 0;j <i;j++){
if(results[i]==results[j]) continue oneNum;
}
break ;
}
}
for(int val : results) System.out.println(val);
}
}
待做
如何下载包,引入包,还有图形界面还在学...
2018.6.27
网友评论