Java基础篇-笔记 p1-p75

这篇博客详细介绍了Java的基础知识,包括DOS命令、Java语言特点、术语、JDK安装配置、环境变量设置、第一个Java程序、Eclipse编辑器的使用、关键字、标识符、基本数据类型、运算符、循环语句、数组、方法、面向对象概念、内存分析、封装性、继承、多态等核心概念。适合初学者学习。
摘要由CSDN通过智能技术生成

Java 从这里启航

文章目录

常见的 DOS 命令

首先进入运行窗口 (快捷键 win + R)

在这里插入图片描述

查看目录下的内容

在这里插入图片描述

dir: 查看目录下容

文件夹操作

在这里插入图片描述

cd: 进入一个文件夹
md: 创建一个文件夹
cd…: 返回上级文件夹

在这里插入图片描述

echo > : 写入文件
type: 查询文件内容
echo >>: 文本追加
del: 文本删除
rd: 文件夹删除

在这里插入图片描述

cls: 清空屏幕

程序是为了模拟现实世界,解决现实问题而使用计算机语言编写的一系列有序的指令集合。

Java 语言特点


面向对象: 重点放在数据(对象)和对象的接口上进行的一种程序设计技术
简单性: Java 剔除了 C++当中许多很少使用,难以理解,容易混淆的特性
跨平台: 一次编译,到处运行,跨操作系统、服务器运行
开源: 免费,可以对源代码进行修改

Java 的术语


JVM (Java Virtual Machine) Java 的虚拟机:

使用软件在不同操作系统中,模拟相同的环境

JRE (Java Runtime Environment) Java 的运行环境:

JVM + 解释器

JDK (Java Development Kit) Java 的开发工具:

JRE + 类库 + 开发工具包(编译器+调试工具)


JDK 测试安装成功


JDK 环境变量配置成功


Java的第一个程序
class HelloWorld{
   
	public static void main(String[] args){
   
		System.out.println("Hello World");
	}
}
Hello World

请添加图片描述

Java 的执行机制

先将源文件(.java)编译成字节码文件(.class), 再将字节码文件进行解释执行
Java的设计模式: “Run Once Run Anywhere“

书写格式
public class HelloWorld{
    
// public: Java语言访问权限关键字
// class: Java语言声明一个类的关键字
// HelloWorld: 表示Java语言的一个文件名,这个名称必须与文件名相同
// 当前这个类的作用范围
	public static void main(String[] args){
   
		// {}:当前代码的作用范围
		// static: Java语言的关键字,表示静态的
		// void: Java语言的关键字,表示无返回任何数据类型的值
		// main: 方法名称,表示Java程序的入口
		System.out.println("Hello");
		System.out.println("World");
	}
}

可视化Java代码编辑器-Eclipse

创建一个.java文件并运行

请添加图片描述请添加图片描述请添加图片描述
请添加图片描述


Java 的关键字


被Java赋予了特定含义的单词

请添加图片描述


Java 的标识符


标识符的命名规则
1. 组成规则
英文大小写字母[a-z][A-Z]、数字字符[0-9]、特殊符号 $ _
2. 注意事项
不能以数字开头、不能使用java关键字、区分大小写

标识符的规范
包名 package name
包名全部小写,一般是公司的域名倒着写 例: com.jf.java
类名 class name
首字母大写,多个单词连接的类名,使用驼峰法书写 例: Demo TestDemo

public class Test2 {
   
// 命名的名称需要见名知意
	public static final int MAX_NUMBER = 100; //常量名需全部大写
	public static void main(String[] args) {
   
		int numOne = 1; //驼峰式写法
		int numTwo = 2;
		
		System.out.print(numOne+numTwo);
	}
	public int getNum() {
    //方法名写法
		return 0;
	}
}

Java的编程基础

Java 的基本数据类型
public class HelloWorld {
   
	
	int a = 20; //成员变量
	public static void main(String[] args) {
   
		
		int num = 10; //局部变量
		/*
		 * 八种基本数据类型
		 * 数据类型
		 */
		byte by = 10; 		//占用1个字符,取值范围-128~127
		short sh = 20;		//占用2个字符,取值范围-32768~32767
		int in = 30;		//占用4个字符
		long lon = 40;		//占用8个字符
		float fl = 1.1F;	//占用4个字符
		double dou = 1.5D;	//占用8个字符
		
		char ch = 'a';		//占用2个字符,取值范围0~65536
		boolean boo = true; //占用字节不确定
		/*
		 * 定义变量的格式
		 * 数据类型 变量名; 声明一个变量
		 * 变量名 = 值;	   赋值一个变量
		 * 
		 * 上述都是声明 + 赋值
		 */
		int a;
		a = 20; // 分步操作
		/*
		 * ASCII码的输出
		 */
		char c = 97;
		System.out.println(c); //输出: a
	}
}
基本数据类型转换
public class Test1 {
   

	public static void main(String[] args) {
   
		// 容量小的数据类型向容量大的直接转换
		// 反之,需要进行强制转换,但注意会出现精度的丢失或数据的溢出
		
		byte b1 = 1;
		short b2 = b1; // 自然转换
		
		short b3 = 1;
		byte b4 = (byte) b3; // 强制转换
		
		char ch = '陈';
		int result = ch; // 转换成字节形式输出
		System.out.println(result); // 38472
		
		/*
		 * 下面的三个转换是由整数转换成浮点数
		 * 可能会存在丢失精度
		 * 
		 * 如果用于表示货币值,不建议使用float或double
		 */
		 
		int num1 = 30;
		float fl1 = num1;
		System.out.println(fl1); //近似值
		
		int num2 = 30;
		double dou1 = num2;
		System.out.println(dou1); //近似值
		
		long num3 = 30;
		double dou2 = num3;
		System.out.println(dou2); //近似值
		
		// 面试题:
		short s1 = 10;
		s1 = (short) (s1 + 1); 
		// 需要强制转换,因为short进行运算的时候会转换成int类型
		// byte、short、int都存在这个问题
		System.out.println(s1);
	} 
}
转义字符的演示
public class Test2 {
   

	public static void main(String[] args) {
   
		// 转义字符:用于转换符号的字符
		System.out.println("转行");
		System.out.print("转义字符,我是一个回车符\n");
		System.out.println("\t我是一个制表符"); //我是可以自适应的
		System.out.println("\\我是一个斜杠,前面那位是转义我的");
		System.out.println("\"我是一个双引号,前面那位是转义我的");
		System.out.println("\'我是一个单引号,前面那位是转义我的");
	}
}
转行
转义字符,我是一个换行符
	我是一个制表符
\我是一个斜杠,前面那位是转义我的
"我是一个引号,前面那位是转义我的'
运算符
import java.util.Scanner;

public class Test3 {
   

	public static void main(String[] args) {
   
		int a = 5;
		int b = 2;
		System.out.printf("加法运算: a + b = %d ",a+b);
		System.out.printf("减法运算: a - b = %d ",a-b);
		System.out.printf("乘法运算: a * b = %d ",a*b);
		System.out.printf("除法运算: a / b = %d ",a/b);
		System.out.printf("取模运算: %d ", a%b);
		
		System.out.println("----换行----");
		
		// 先自增
		int num1 = a++;
		System.out.printf("我是先赋值,后自增: %d ",num1); // a = 5
		System.out.printf("自增后 a 的值: %d ",a); // a = 6
		
		// 后自增
		int num2 = ++b;
		System.out.printf("我是先自增,后赋值: %d ",num2); // b = 3
		System.out.printf("自增后 b 的值: %d ",b); // b = 3
		
		System.out.println("----换行----");
		/*
		 * 赋值运算符
		 */
//		 a += 1;
//		 a -= 1;
//		 a *= 2;
//		 a /= 2;
//		 a %= 2;
		
	     // 面试题:
		short s = 10;
		s += 1;
		System.out.printf("我是 short 类型下使用赋值运算符计算的结果: %d",s); 
		// 我是不用进行强制进行转换
		
		System.out.println("----换行----");
		/*
		 * 关系运算符
		 */
		System.out.printf("a=%d,b=%d ",a,b);
		System.out.printf("a==b: %b ",a==b);
		System.out.printf("a!=b: %b ",a!=b);
		System.out.printf("a>b: %b ",a>b);
		System.out.printf("a<b: %b ",a<b);
		System.out.printf("a>=b: %b ",a>=b);
		System.out.printf("a<=b: %b ",a<=b);
		
		
		System.out.println("----换行----");
		// 创建一个键盘输入的工具
		Scanner input = new Scanner(System.in);
		System.out.print("请输入一个整数值: ");
		
		int num3 = input.nextInt(); // 系统获取刚才输入的整数值
		System.out.printf("整数值为: %d",num3);
		input.close();
		
	}
}
加法运算: a + b = 7 减法运算: a - b = 3 乘法运算: a * b = 10 除法运算: a / b = 2 取模运算: 1 ----换行----
我是先赋值,后自增: 5 自增后 a 的值: 6 我是先自增,后赋值: 3 自增后 b 的值: 3 ----换行----
我是 short 类型下使用赋值运算符计算的结果: 11----换行----
a=6,b=3 a==b: false a!=b: true a>b: true a<b: false a>=b: true a<=b: false ----换行----
请输入一个整数值: 4
整数值为: 4
逻辑运算符
public class Test4 {
   

	public static void main(String[] args) {
   
		/*
		 * 逻辑运算符
		 */
		boolean a = true;
		boolean b = false;
		// 与运算:分别计算表达式两边的结果再作与运算,两边同时为true的时候,结果为true
		System.out.printf("a&b is %b\n", a&b);
		
		// 或运算:分别计算表达式两边的结果再作与运算,两边只要有一个为true,结果为true
		System.out.printf("a|b is %b\n", a|b);
		
		// 异或运算:分别计算表达式两边的结果再作与运算,两边结果相异为true,相同为false
		System.out.printf("a^b is %b\n", a^b);
		
		// 非运算:
		System.out.printf("!a is %b\n", !a);
		
		// 短路与:
		System.out.printf("a&&b is %b\n", a&&b);
		
		// 短路或:
		System.out.printf("a||b is %b\n", a||b);
		
		/* 面试题:
		 * & vs &&:
		 * &:在逻辑运算时分别计算表达式两边的结果,再作&运算,在做位运算时&表示按位与
	     * &&短路与运算,先计算左边的表达式,如果结果是false,那么不用计算右边表达式,直接返回false,
		 * 如果左边的表达式结果是true,再计算右边的表达式,如果右边的表达式为true,结果为true,否则为false
				
		 * | 和 ||的原理同上。
	     * 所以短路与 或 短路或的计算效率更高,建议使用。
	     */
	     
	     // 面试题:以最快的速度计算8*4结果?
	     System.out.println(8<<2);
	}
}
a&b is false
a|b is true
a^b is true
!a is false
a&&b is false
a||b is true
8*4 结果是 32
位运算
public class Test5 {
   

	public static void main(String[] args) {
   
		/*
		 * 位运算
		 */
		// 左移运算:位移数作为2次幂与操作数相乘
		System.out.println(8<<2);
		// 右移运算:操作数除以位移数的2次幂
		System.out.println(8>>2);
		
		// 通过键盘输入,初始化两个数将这两个数据交换位置后,输出显示交换后的数据。
		Scanner input = new Scanner(System.in);
		System.out.println("请输入第一个数"); // 32
		int a = input.nextInt();
		System.out.println("请输入第二个数"); // 2
		int b = input.nextInt();
				
		// (1)通过第三个变量来交换
		int c = a;
		a = b;
		b = c;
		System.out.println("a="+a+",b="+b);
		// (2)不通过第三个变量如何交换两个数?
		// 1.通过表达式
		a = a+b-(b=a);
				
		// 2.通过+-计算
		a=a+b;
		b=a-b;
		a=a-b;
		 		
		// 3.通过异或,两个数交换位置最快的方法
		a = a^b;
		b = a^b;
		a = a^b;	
		input.close();
	}
}
三目运算符
/*
 * 三目运算符
 */
import java.util.Scanner;

public class Test6 {
   

	public static void main(String[] args) {
   
		System.out.println("请输入一个成绩: ");
		Scanner input = new Scanner(System.in);
		int score = input.nextInt();
		
		// boolean result = score>=60?true:false;
		// String表示一个字符串类型,不是一个基本数据类型
		String result = score >= 60? "及格":"不及格";
		
		System.out.println(result);
		input.close();
	}

}
if 条件判断语句
public class Test7 {
   

	public static void main(String[] args) {
   
		
		// 1、输入一个数字,这个数字转码可以为一个字母,判断是大写字母还是小写字母,输出提示信息。
		Scanner input = new Scanner(System.in);
		System.out.println("请输入一个数字,范围是65-122:"); // 65是A,97是a,122是z
		int c = input.nextInt();
		
		if(c>=65 && c<=90){
   
			System.out.println("您输入的是一个大写字母"+(char)c);
		}else {
   
			System.out.println("您输入的是一个小写字母"+(char)c);
		}
		
		// 2、写一个程序,判断某一年是否为闰年是闰年否则是平年
		// 被 4 整除但不能被 100 整除能被 400 整除
		System.out.println("请输入年份:");
		int year = input.nextInt();
		
		if((year%4==0 && year%100!=0) || year%400==0){
   
			
			System.out.println("是闰年");
		}else{
   
			System.out.println("平年");
		}
		
		// 3、给出一个百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。
		// 90分以上输出’A’,80~89分输出’B’,70~79分输出’C’,
		// 60~69分输出’D’,60分以下输出‘E’
		
		System.out.println("输入一个成绩:");
		int score = input.nextInt();
		if(score>=90){
   
			System.out.println("A");
		}else if(score<90 && score >=80){
   
			System.out.println("B");
		}else if(score<80 && score >=70){
   
			System.out.println("C");
		}else if(score<70 && score >=60){
   
			System.out.println("D");
		}else if(score<60){
   
			System.out.println("E");
		}
		input.close();
	}
}
switch 分支语句
public class Test8 {
   

	public static void main(String[] args) {
   
		Scanner input = new Scanner(System.in);
		System.out.println("今天是星期几?");
		int day = input.nextInt();
		/*
		 * switch括号内的表达式的返回值必须是int/char/short/byte,1.7后支持String
		 * 每一个case子句必须是唯一的常量值,需要添加break,否则将继续往下执行。
		 * default语句可以省略
		 */
		switch(day){
   
			case 1:
				System.out.println("星期一");
				System.out.println("周一比较堵,请慎重选择出行方式(1公车,2地铁)");
				int method = input.nextInt();
				if(method==1){
   
					System.out.println("公交出行");
				}else{
   
					System.out.println("地铁出行");
				}
				break;
			case 2:
				System.out.println("星期二");
				break;
			case 3:
				System.out.println("星期三");
				break;
			case 4:
				System.out.println("星期四");
				break;
			case 5:
				System.out.println("星期五");
				break;
			case 6:
				System.out.println("星期六");
				break;
			case 7:
				System.out.println("星期日");
				break;
			default:
				System.out.println("地球上不适合你,请回火星吧");
				break;
		}
		input.close();
	}
}
switch分支语句小练习
/*
 * switch分支语句小练习
 */
import java.util.Scanner;

public class Test9 {
   
	// switch分支语句
	// 直接用JDK1.7的字符串条件判断,确定两个数是执行加、减、乘、除操作。
	public static void main(String[] args) {
   
		
		Scanner input = new Scanner(System.in);
		System.out.println("请输入第一个数"); 
		int num1 = input.nextInt();
		
		System.out.println("请输入第二个数");
		int num2 = input.nextInt();
		
		System.out.println("请输入操作符(+,-,*,/)");
		String option = input.next(); // 输入的是字符串
		switch(option){
   
			case "+":
				int i = 10;
				System.out.println("num1+num2="+(num1+num2));
				System.out.println("i="+i);
			break;
			case "-":
				i = 20;
				System.out.println("num1-num2="+(num1-num2));
				System.out.println("i="+i);
			break;
			case "*":
				System.out.println("num1*num2="+(num1*num2));
			break;
			case "/":
				System.out.println("num1/num2="+(num1/num2));
			break;
			default:
				System.out.println("输入的操作符有误");
				break;
		}
		input.close();
	}
}

  1. 在实现分支判断时,匹配成功率高的判断放在前面,可以提高效率
  2. 在表达式中判断,我们尽量使用确定的值去跟不确定的值进行判断
while 循环语句的小练习
//1、计算1-100之间所有整数之和
public class Test10{
   
	
	public static void main(String[] args){
   
	
		int num = 0; 	//计算总数
		int i = 1; 		//增量
		while(i<=100){
   
			num+=i;
			i++;
		}
		System.out.println(num);
		
		// 2、计算 10 的阶乘
		int i2 = 1;
		int num2 = 1;
		while(i2<=10){
   
			num *= i;
			i2++;
		}
		System.out.printf("10 的阶乘的结果为: %d\n", num2);
		
		// 3、输出1~3中奇数,偶数和3的倍数
		int i3=1;//增量
		while(i3<=3){
   
			if(i3%2==0){
   
				System.out.println("偶数:"+i3);
			}else{
   
				System.out.println("奇数:"+i3);
			}
			if(i3%3==0){
   
				System.out.println("3的倍数:"+i3);
			}
			i3++;
	}
}
1-100之间所有整数之和为: 5050
10 的阶乘的结果为: 1
奇数:1
偶数:2
奇数:3
3的倍数:3

while循环:先判断,再执行,有可能执行0次

do…while 循环语句的小练习
public class Test11 {
   
	public static void main(String[] args){
   
	
		System.out.println("逆序输出3~0的结果:");
		// 1、逆序输出3~0
		int i = 3;
		do{
   
			//循环体
			System.out.println(i);
			i--;
		}while(i>=0);//循环条件
		
		System.out.println("阶乘求和 1!+2!+...+10!的结果:");
		// 2、Java阶乘求和 1!+2!+...+10!
		int num = 0;//记录总和
		int i2 = 1;
		do{
   
			int j = 1;
			int jc = 1;//求阶乘的和
			while(j<=i){
   
				jc *=j;
				j++;
			}
			num+=jc;
			i2++;
		}while(i2<=10);
		System.out.println(num);
	}
}

逆序输出3~0的结果:
3
2
1
0
阶乘求和 1!+2!+...+10!的结果:
10

do while循环:先执行,再判断,最少执行一次

for 循环的六种写法
public class Test12{
   
	public static void main(String[] args){
   

		System.out.println("标准写法");
		//1、标准写法 
		for(int i=0;i<=3;i++){
   
			if(i==2){
   
				continue;			//跳过当次循环,进入下次循环
			}
			System
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Felix_cx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值