基本数据类型和运算符应用注意事项

基本数据类型注意事项:
(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
	}
}

通过 时间复杂度(更关注)、空间复杂度来衡量一个算法的优劣。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值