基本数据类型注意事项:
(1)整数型long 定义结尾要加L或l
浮点型float 定义结尾要加F或f
(2)1字节byte=8bit位
(3)运算规则:自动类型提升(byte(1字节) 、short(2字节)、char(2字节) -> int (4字节)-> long (8字节)-> float(4字节) -> double(8字节)),1字节=8bit。
byte、short或char运算时结果为int型。
整数常量默认为int,浮点数常量默认为double。
(4)String定义字符串,不可以强制类型转换。
(5)当想输出双引号时可加/“/”即可。/后面可输出原本内容。
(6)char型变量运算,char只能用单引号定义一个字符(不能为空)而String可定义0个1个或多个字符。若要强制输出类型可加(int)等定义。
(7)n+=1 不改变数据类型,n=n+1可能要改变数据类型。
(8)引号的使用
char d='x';
System.out.println(d);//x
System.out.println('x');//x
System.out.println('d');//d
没有连接符“+”时就是字符,有+后面所跟内容为数字时,做数字运算。
运算符使用
①逻辑运算符& 、&& 、 | 、 ||、 ! 、^。
②位运算符:<<(左移相当于乘2)、 >> (右移)、 >>>(不管是正数还是负数,右移之后,高位都补0) 、 &、 |、 ^、 ~。
③三元运算符:(条件表达式)? 表达式1 : 表达式2
import java.util.Scanner;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//3.1 获取String类型的变量
System.out.println("请输入你的姓名:");
String name = scan.next();
System.out.println("名字为:" + name);
④random()之获取一定范围的随机数
Math.random(); //random():返回一个>= 0.0 且 < 1.0的double型值
所以有时候需要强制类型转换; //获取[a,b]范围内的随机数:(int)(Math.random() * (b - a + 1) + a)
⑤ for(;;)循环之100以内的所有质数及其优化
/*
100以内的所有质数
质数(素数):只能被1和它本身整除的自然数。 --> 从2开始到这个数-1为止,没有任何一个自然数是这个数本身的约数。
比如:2 3 5 7 11 .... 8 (2-7)
*/
class PrimeNumberTest {
public static void main(String[] args) {
/*
方式一:
for(int i = 2;i <= 100;i++){
int count = 0;
for(int j = 2;j < i;j++){
if(i % j != 0){
count++;
}
}
if(count == i - 2){
System.out.println(i);
}
}
*/
//方式二
boolean flag = true;
for(int i = 2;i <= 100;i++){
for(int j = 2;j < i;j++){
if(i % j == 0){
flag = false;
}
}
if(flag){//if(flag == true){
System.out.println(i);
}
flag = true;
}
}
}
优化
class PrimeNumberTest1 {
public static void main(String[] args) {
long start = System.currentTimeMillis();//开始时间
int count = 0;//记录质数的个数
boolean flag = true;
for(int i = 2;i <= 100000;i++){
for(int j = 2;j <= Math.sqrt(i);j++){//优化二:临界值改为Math.sqrt(i)
if(i % j == 0){
flag = false;
break;//优化一:针对于非质数
}
}
if(flag){//if(flag == true){
//System.out.println(i);
count++;
}
flag = true;
}
long end = System.currentTimeMillis();//结束时间
System.out.println("花费的时间为:" + (end - start));//14943 - 1675 - 543
System.out.println(count);//9592
}
}
通过 时间复杂度(更关注)、空间复杂度来衡量一个算法的优劣。