01_java入门知识

1、java的三大版本

  • JavaSE:标准版,定位于个人计算机(桌面)的应用。
  • JavaEE:企业版,定位于服务器端的应用。
  • JavaME:微型版,定位于消费性电子产品的应用。
    在这里插入图片描述

2、java的特征和优势

  • 跨平台/可移植性 (核心优势)
  • 面型对象
  • 简单性
  • 高性能
  • 分布式
  • 多线程
  • 健壮性

3、java应用程序运行机制

在这里插入图片描述

4、JVM、JDK与JRE

  • JVM:java虚拟机。
  • JRE:java运行时环境,包括JRE、库函数、运行java应用程所必需的文件。
  • JDK:java开发工具包,包括JRE、编译器和调试器等用于程序开发的文件。
    在这里插入图片描述

5、注释

在这里插入图片描述

6、标识符、java关键字

6.1 标识符

  • 用来给变量、类、方法以及包进行命名。

  • 标识符一般使用驼峰命名法

规则:
1、开头:字母 、_ 、$
2、除开头外:字母 、_ 、$和数字的任意组合。
3、大小写敏感,长度无限制。
4、不可以是java关键字。

6.2 java关键字(保留字)

  • java中保留供内部使用的。
    在这里插入图片描述

7、变量和常量

7.1 变量

7.1.1 变量基本概念
  • 变量本质上是一个“可操作性的存储空间”,空间位置是确定的,但存储的值不确定。
  • 变量作为程序中最基本的存储单元,包括变量名、变量类型和作用域。
  • 变量在使用前必须声明和初始化。
int age;  //4个字节大小
		
double money;  //8个字节大小
7.1.2 变量的分类
  • 局部变量:方法或语句块内部定义的变量。局部变量使用前必须声明和初始化。从属于方法和语句块。
  • 成员变量(实例变量):方法外部、类的内部定义的变量。成员变量会自动初始化。从属于对象。
  • 静态变量(类变量):使用static定义的变量。从属于类。
public class Variable {
	int a;  //成员变量
	static double d;  //静态变量
	public static void main(String[] args) {
		int b = 7;   //局部变量
		System.out.println(b);
		{
			double c = 0.001;   //局部变量
		}
	}
}
7.2 常量
  • 常量是一个固定的值,由final修饰。
  • 常量的命名规范:大写字母和下划线。
  • 常量不能再被赋值。
public class Constant {
	public static void main(String[] args) {
		final double PI = 3.14;
		//PI = 5;  //错误,常量不能再被赋值
		final String NAME = "apple";
	}
}

8、基本数据类型

在这里插入图片描述

8.1 整型

Java中整型的四种表示形式:

  • 十进制
  • 二进制:要求以0b开头。
  • 八进制:要求以0开头。
  • 十六进制:要求以0x0X开头。

8.2 浮点型

  • 浮点型不精确,不能用于高精度运算和比较。要比较的的话,应使用BigDecimal。

8.3 字符型

  • 使用单引号表示,用来表示在Unicode编码表中的字符。
  • java转义字符:
    在这里插入图片描述

8.4 布尔型

  • boolean类型只有两个常量值:true和false。
public class DateType {
	public static void main(String[] args) {
		//整型
		byte a = 10;
		short b = 12;
		int c = 235;
		long d = 125846L;
		//进制测试
		int e1 = 0b1101;  //二进制,13
		int e2 = 015;  //八进制,12
		int e3 = 0x15;  //十六进制,21
		
		//浮点型
		float f = 2.45f;
		double g = 3.456;
		
		//字符型
		char h = 'A';
		char i = '保';
		char j = '\u0077';  //w
		
		//布尔型
		boolean k = true;
		boolean l = false;
	}
}

8.5 数据类型转换

8.5.1 自动转换
  • 数字表示范围小的数据类型可以自动转换成范围大的数据类型。
  • 实线表示自动转换时不会造成数据丢失,虚线则可能会出现数据丢失问题。

在这里插入图片描述

8.5.2 强制转换
  • 数字表示范围大的数据类型可以自动转换成范围小的数据类型。
  • 会造成精度丢失。
public class DataConversion {
	public static void main(String[] args) {
		//自动类型转换
		int a = 100;
		long b = a;
		double c = a;
		
		//强制类型转换
		double d = 100.25;
		int e = (int) d;
		float f = (float) d;
	}
}

9、运算符

9.1 算数运算符

在这里插入图片描述

9.2 赋值运算符

在这里插入图片描述

9.3 比较运算符

在这里插入图片描述

9.4 逻辑运算符

在这里插入图片描述

  • 逻辑与(或)和短路与(或)的区别

1、&和|运算符会执行所有的操作数(执行条件);
2、&&运算符当有操作数的值为false时,就结束运算,不再执行后面的操作数;
3、||运算符当有操作数的值为true时,就结束运算,不再执行后面的操作数;

public class TestOperator {
	public static void main(String[] args) {
		System.out.println(1<3 || 2>(3/0));  //true
		System.out.println(1>3 && 2>(3/0));  //false
		//|和&会执行第二个操作数,所以会报错
		System.out.println(1<3 | 2>(3/0));  //编译错误:java.lang.ArithmeticException: / by zero
		System.out.println(1>3 & 2>(3/0));  //编译错误:java.lang.ArithmeticException: / by zero
	}
}

9.5 三元运算符(?)

System.out.println( 3>2 ? “正确” : “错误” );

10、Scanner

  • 获得键盘输入的内容。
public class ScannerTest {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入你的姓名:");
		String name = input.next();
		System.out.println("请输入你的年龄");
		int age = input.nextInt();
		
		System.out.println("你的姓名:" + name);
		System.out.println("你的年龄:" + age);
	}
}

在这里插入图片描述

11、控制语句

  • 顺序结构
  • 选择结构
  • 循环结构

11.1 选择结构

  • if
public class Testif {

	public static void main(String[] args) {
		int a = 10;
		if (a >= 0) {
			System.out.println("a是一个正数");
		}
	}
}
  • if…else
public class Testifelse {
	public static void main(String[] args) {
		int age = 25;
		if (age < 18) {
			System.out.println("你还未成年");
		} else {
			System.out.println("你已经成年了");
		}
	}
}
  • if…else if…else if…else
public class Testelseif {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入你的成绩:");
		double result = input.nextDouble();
		if (result < 60) {
			System.out.println("你的成绩不及格");
		} else if (result < 80) {
			System.out.println("你的成绩等级为C");
		} else if (result < 90) {
			System.out.println("你的成绩等级为B");
		} else {
			System.out.println("你的成绩等级为A");
		}
	}
}
  • switch
public class TestSwitch {
	public static void main(String[] args) {
		int month = (int) (1+12*Math.random());
		System.out.println("得到的月份是:" + month);
		switch (month) {
		case 1:
		case 2:
		case 3:
			System.out.println("这是第一季度");
			break;
		case 4:
		case 5:
		case 6:
			System.out.println("这是第二季度");
			break;
		case 7:
		case 8:
		case 9:
			System.out.println("这是第三季度");
			break;
		case 10:
		case 11:
		case 12:
			System.out.println("这是第四季度");
			break;

		default:
			System.out.println("这个不是月份数");
			break;
		}
	}
}

11.2 循环结构

循环结构分为当型和直到型。

  • wlile
public class TestWhile {
	public static void main(String[] args) {
		//计算1+2+3+...+100的值
		int i = 1;
		int sum = 0;
		while(i<=100) {
			sum = sum + i;
			i++;
		}
		System.out.println("1+2+3+...+100 = " + sum);
	}
}

  • do…while
public class TestDoWhile {
	public static void main(String[] args) {
		int i = 1;
		int sum = 0;
		do {
			sum = sum + i;
			i++;
		} while (i <= 100);
		System.out.println("1+2+3+...+100 = " + sum);
	}
}
  • for
public class TestFor {
	public static void main(String[] args) {
		int sum = 0;
		for (int i = 1; i <= 100; i++) {
			sum = sum + i;
		}
		System.out.println("1+2+3+...+100 = " + sum);
	}
}

11.3 break和continue

  • break
    结束整个循环。
public interface TestBreak {
	public static void main(String[] args) {
		for (int i = 1; i <= 10; i++) {
			if (i == 7) {
				break;
			}
			System.out.print(i + "\t");
		}
	}
}

在这里插入图片描述

  • continue
    结束单次循环。
public class TestContinue {
	public static void main(String[] args) {
		for (int i = 1; i <= 10; i++) {
			if (i == 7) {
				continue;
			}
			System.out.print(i + "\t");
		}
	}
}

在这里插入图片描述

12、方法

12.1 方法的基本概念

  • 方法是一段用来完成特定功能的代码片段。
  • 方法声明格式:

[修饰符] 返回值类型 方法名() { java语句…}

public class Method {

	public static void main(String[] args) {
		//通过对象调用方法
		Method mt = new Method();
		mt.method1();
		int c = mt.add(100, 25) + 1000;
		System.out.println(c);  //1125
	}
	
	void method1() {
		System.out.println("这是第一个方法");
	}
	
	int add(int a,int b) {
		System.out.println(a+b);  //125
		return a + b;  //return的两个作用:1、结束方法的运行;2、返回值
	}
}

12.2 方法的重载(overload)

  • 重载的方法只是名称相同而已,实际上是完全不同的方法。
  • 构成重载的条件:(1)方法名称相同;(2)形参个数、形参类型、形参顺序不同。
  • 只有返回值不同不构成重载。
public class TestOverload {
	public static void main(String[] args) {
		TestOverload tOverload = new TestOverload();
		System.out.println(tOverload.add(10, 20));
		System.out.println(tOverload.add(25, 37, 45));
		System.out.println(tOverload.add(15, 37.26));
		System.out.println(tOverload.add(25.25, 68));
	}
	
	public static int add(int a,int b) {
		return a + b;
	}
	
	//形参个数不同,构成重载
	public static int add(int a,int b,int c) {
		return a + b + c;
	}

	//形参类型不同,构成重载
	public static double add(int a,double b) {
		return a + b;
	}
	
	//形参顺序不同,构成重载
	public static double add(double a,int b) {
		return a + b;
	}
}

13、递归

  • 递归的基本思想就是:“自己调自己”。
  • 递归结构包括两个部分:
    (1)递归头:定义什么时候结束调用自身的方法。
    (2)递归体:定义什么时候需要调用自身的方法。
public class TestDigui {
	
	public static void main(String[] args) {
		a();
	}

	static int count = 1;
	static void a() {
		System.out.println("a" + " + " + count);
		count++;
		if (count<=10) {
			a();
		} else {
			return;
		}
	}
}
public class TestFac {
	//求n!
	public static void main(String[] args) {
		long time1 = System.currentTimeMillis();  //程序执行开始时的时间
		System.out.println("结果为:" + fac(40));
		long time2 = System.currentTimeMillis();  //程序执行结束时的时间
		System.out.println("递归耗时:" + (time2-time1) + "ms");
	}
	
	static long fac(int n) {
		if (n == 1) {
			return 1;
		} else {
			return n * fac(n-1);
		}
	}
}
  • 递归的优缺点:
    (1)优点:程序简单。
    (2)缺点:占用大量内存;花费时间;速度比循环慢的多。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值