Java基础(一)

这篇博客主要介绍了Java的基础知识,包括其特性、基本语法和控制流语句。Java具有简单性、安全性和跨平台等特性,数据类型分为基本和引用类型,控制流包括条件语句、循环语句和跳转语句。
摘要由CSDN通过智能技术生成

本章节用于回顾Java基础,包含了Java特性、数据类型、运算符和控制流语句相关知识。

一、Java特性

1.什么是Java?

Java是Sun公司于1995年发布的一种面向对象的编程语言和计算平台。

Java语言三个平台版本:

  • JavaSE(J2SE)(Java2 Platform  Standard  Edition,Java 平台标准版)
  • JavaEE(J2EE)(Java2 Platform, Enterprise  Edition,Java平台企业版)
  • JavaME(J2ME)(Java2 Platform  Micro  Edition,Java平台微型版)

2.Java特性

简单性 安全性 面向对象 高性能 编译性 解释性 分布式处理 健壮性 开源 跨平台

  • 面向对象

        万物皆对象!面向对象是一种以过程为中心的编程思想。举例说明:如果把学生当作一个对象,那么可以通过相关的属性和功能进行描述,通过相关的编码进行实现。属性:姓名、年龄、性别、年级.......功能比如:吃饭、上课、考试........

  • 跨平台

一次编写,处处运行。

Java的程序源文件是.java文件,Eclipse或者IDEA将Java文件编译成.class字节码文件,然后把.class字节码文件打成.jar文件,那么就可以在Windows、Mac    OS、Linux系统下运行了。不同的操作系统有不同的JVM实现,但是在切换平台的时候,是不需要再重新编译Java代码了。

3.Java环境配置

  • JDK:Java开发工具包-----开发的最小单位;
  • JRE:Java运行是环境-----运行的最小单位;
  • JVM:Java虚拟机----负责加载并运行.class字节码文件。

环境配置比较简单,可参考教程很多,注意好路径就好了。

二、Java基本语法

1.数据类型

Java的数据类型分为两种,基本数据类型和引用数据类型,基本数据类型有四类八种,剩下的都属于引用类型。

(1)基本数据类型

类型名称
字节空间
取值范围
默认值
整数型
byte
1位=8bits
-2^7~2^7 -1或-128~127
0
short
2位=16bits
-2^15 ~2^15 -1
0
int
4位=32bits
-2^31 ~2^31 -1
0
long
8位=64bits
-2^63 ~2^63 -1
0L
浮点型
double
4位=32bits
单精度,对小数部分精度要求不高
0.0f
float
8位=64bites
双精度,对小数部分要求高且操作值大
0.0d
字符型
char
        2位=16bits
0~65535
\u0000
布尔类型
boolean
1位=8bits
真true  假false
false -2^{7}~2^{7}-1

(2)基本类型的字面值

  • 整数类型的字面值类型是int类型;
  • 浮点数类型的字面值类型是double类型;
  • byte、short、char三种比int小的整数可以用范围内的值直接赋值;
  • 字面值后缀L D F;
  • 进制前缀-----0b  二进制;0  八进制; 0x  16进制
/**本类用于测试基本类型的字面值规则*/
public class Demo1 {
	public static void main(String[] args) {
		/**1.整数类型的字面值类型为int*/
		int x = 9999;
		//byte y = 300;
		long g = 99999999999999L;//如果要定义long类型的数据,需要在后面加后缀L
		
		/**2.浮点型类型的字面值类型为double*/
		double d = 3.14;
		//float f = 3.14;报错,3.14认为自己是double类型
		float f = 3.14F;
		double d2 = 3D;//如果整型数字向要表示自己为小数,可以加后缀D
		System.out.println(d2);
		
		/**3.byte short char三种比int小的类型,可以使用范围内的值直接赋值*/
		/** 4.字面值后缀L-long D-double F-float*/
		long m = 99999999L;//字面值为int,加了后缀L变为long
		float n = 3.26F;//字面值为double,后加了后缀F变为float
		double q = 4D;//字面值为int,后加了后缀D变为double类型
		
		/**5.进制的前缀:2进制:0b  8进制:0  16进制:0x*/
		System.out.println(100);
		System.out.println(0b100);
		System.out.println(0100);
		System.out.println(0x100);
			
	}

}

2.数据类型的转换

(1)转换规则

隐式转换:小到大,直接转  byte->short->int->long->(float)->double   char->int->float->double

 显示转换:大到小,强制转

注意:

  • 转换过程中可以导致溢出或者精度损失;
  • 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入;
  • 不能对boolean类型转换;
/**本类用于测试类型转换*/
public class Demo2 {
	public static void main(String[] args) {
		/**1.小到大,直接转*/
		byte a = 120;
		int b = a;
		
		/**2.大到小,强制转*/
		float f = 3.14F;
		double d = f;
		int x1 = 120;
		int x2 = 128;
		byte y1 = (byte)x1;
		byte y2 = (byte)x2;//超出范围,会溢出
		System.out.println(y1);
		System.out.println(y2);
		
		/**3.浮点数,小数没*/
		double dd = 9.99;
		int ii = (int)dd;
		System.out.println(ii);
	}

}

(2)运算规则

  • 计算结果的数据类型,与最大数据类型一致---int/double=double;
  • byte short char 三种比int小的整数,运算时会先自动转换成int;
  • 整数运算溢出(超过数据类型的范围);
  • 浮点数运算不精确;
  • 浮点数运算的特殊值 infinity NaN;
/**本类用于测试运算规则*/
public class Demo3 {
	public static void main(String[] args) {
		/**1.运算结果的数据类型,与参与的最大类型保持一致*/
		System.out.println(3/2);//1
		System.out.println(3/2D);//1.5
		
		/**2.byte short char 3种比int小的类型,运算时会先自动提升成int,再参与运算*/
		byte b1 = 1;
		byte b2 = 2;
		byte b3 = (byte)(b1+b2);
		System.out.println(b3);//3
		
		/**3.整数运算溢出问题*/
		//光跑一年跑多远
		System.out.println(3000000000L*3600*24*365);//94608000000000000
		
		/**4.浮点数运算不精确的现象*/
		System.out.println(1-0.8);//0.19999999999999996
		
		/**5.浮点数的特殊值*/
		System.out.println(3.14/0);//Infinity
		System.out.println(0.0/0);//不是数NaN
		
	}
}

3.运算符

运算符
运算符种类
写法
作用
算术运算符
+ - * /
基本四则运算;
%
取余数;
--
自减运算,a--或者--a,两种都相当于a=a-1;但是执行时机不一样;
++
自增运算,a++或者++a,两种都相当于a= a+1执行 时机不同。
比较运算符
>、<、>=、<=
基本比较运算符;
==
比较两个操作数是否相当,若相等,返回true,不等返回false;
!=
比较两个值是否不等,不等就返回true,相等结果false;
逻辑运算符
&
逻辑与,两边真才真;
&&
短路与,一边为false,结果返回false,但是如果 左边返回false, 结果直接false,右边不再进行判断;
|
逻辑或,一边为true,结果为true;
||
短路或,一边为true,结果为true, 返回true,停止运行;
+
字符串连接;
!
非,非真是假, 非假是真;
三目运算符
?:
1  ?  2  :3
1的位置是表达式,2和3作为选择条件
如果1为真则取2,1为假取3;
=
赋值语句
+=    -=
复合运算;
*=   /=
复合运算;

三、控制流语句

1.条件语句

(1)if条件语句

import java.util.Scanner;
/**本类用作运算符的综合案例*/
//需求:接收用户输入的年份,判断是平年还是闰年
//补充:闰年的判断条件
//条件1:能被4整除,并且不能被100整除
//条件2:能被400整除
public class TestYear {
	public static void main(String[] args) {
		System.out.print("请输入要判断的年份:");
		int year = new Scanner(System.in).nextInt();
		
		String  result = "平年";
		
//		if(year % 400 ==0) {
//			result = "闰年";
//		}
//		if(year % 4 ==0) {
//			if(year %100 !=0) {
//				result = "闰年";
//			}			
//		}	
		if(year % 400 ==0 || year % 4 == 0 & year % 100 != 0) {
			result = "闰年";
		}
		System.out.println(year+"年是"+result);
	}

}

(2)if......else条件语句

/**本类用于复习分支结构*/
public class TestIF {
	public static void main(String[] args) {
		/**多分支结构*/
		char gender = '男';
		if(gender == '男') {
			System.out.println("是男生");
		}else{
			System.out.println("是女生");	
			}
		}
}

(3)if.....else  if多分支语句

import java.util.Scanner;
/**此类用于练习嵌套分支结构*/
public class TestScore {
	public static void main(String[] args) {
		System.out.print("请输入该同学的成绩:");
		int score = new Scanner(System.in).nextInt();
		//数据的合理性校验
		if(score  < 0 || score > 100) {
			System.out.println("您输入的数据不合法!");
		}else {
			if(score >= 90) {
				System.out.println("该同学分数为"+score+",优秀");
			}else if(score >= 80 ) {
				System.out.println("该同学分数为"+score+",好");
			}else if(score >= 70) {
				System.out.println("该同学分数为"+score+",良好");
			}else if(score >= 60) {
				System.out.println("该同学分数为"+score+",及格");
			}else{
				System.out.println("该同学分数为"+score+",不及格");
			}		
		}	
	
	}

}

(4)switch多分支语句

/**本类用于练习选择结构switch*/
/**变量a的类型支持byte short char int string
 * 1.执行顺序:会拿着变量a的值依次与每个case后的值做比较
 * 2.如果相等,会执行当前case后的操作,包括default选项
 * 3.也就是说如果不加break,只要匹配到case,就会一直执行剩余
 * 所有的选项,包括default,我们把这个现象称为"穿透"现象
 * 4.如果设置了default,并且没有任何case被匹配到,就会执行default保底选项*/
public class TestSwitch {
	public static void main(String[] args) {
		int a = 2;
		switch(a) {
		case 1: System.out.println(1); break;
		case 2: System.out.println(2); break;
		case 3: System.out.println(3); break;
		case 4: System.out.println(4); break;
		case 5: System.out.println(5); break;
		default : System.out.println(0);
		}	
	}
}

2.循环语句

(1)while循环

import java.util.Random;
import java.util.Scanner;
/**本类用于测试循环结构while*/
public class TestWhile {
	public static void main(String[] args) {
		 int r = new Random().nextInt(100);
		 System.out.println(r);
		 while(true) {
			 System.out.print("猜猜看:");
			 int input = new Scanner(System.in).nextInt();
			 if(input > r) {
				 System.out.println("猜大了,继续猜猜看~");
			 }else if(input < r) {
				 System.out.println("猜小了,大胆点儿");
			 }else if(input == r) {
				 System.out.println("恭喜你,猜对了!!!");
				 break;
			 }
		 }	 
	}
}

(2)do .....while循环

import java.util.Random;

/**本类用于测试循环结构do - while*/
public class TestDoWhile {
	public static void main(String[] args) {
		int n;
		do {
			System.out.println("循环体");
			n  = new Random().nextInt(300);
			System.out.println(n);
		}while(n > 100);
	}
}

(3)for循环

/**本类用于测试99乘法表*/
public class TestFor99Excel {
	public static void main(String[] args) {
		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();
		}
	}
}

注意:

循环之间的比较:

  • 如果想明确知道循环的次数/需要设置循环变量的的变化情况时--使用for循环;
  • 如果想写死循环---while(true){};
  • 如果需要先执行一次,再做判断----do-while;
  • 循环之间是可以互相替代的,但是最好使用比较合适的循环结构。

3.跳转语句

(1)continue

退出本轮循环,进入下一次循环,循环并未完全结束。

(2)break

强行退出当前循环。

(3)return

是一个方法的返回,并把控制权交给调用它的语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值