Java的基础学习笔记:
文章目录
1.JDK的下载、安装、配置
首先,先介绍下JRE和JDK:
JRE(Java Runtime Environment ) Java运行环境,用来运行JAVA程序的。
JDK(Java Development Kit) Java开发工具包,包含JRE。因此只需要下载安装JDK即可中。
下载链接(官网):Java (oracle.com)
我们进入页面后,点击Download Java,下载对应的Java版本。
安装过程中就注意下选择自己需要安装的路径(不要包含中文字符),一路next就好了。
安装好后,进行如下步骤:
随后点击高级系统设置:
随后点击环境变量:
在系统变量(s)下方选择新建
如图建立变量名为Java_home的系统变量,其中变量值指的是JDK的安装路径,直接复制JDK的安装路径黏贴即可。
然后再在系统变量(s)中找到path
点击编辑,进入下图所示页面
点击新建(N),输入%Java_Home%\bin
完成以上操作后,进入命令行分别输入java、javac看命令是否执行成功。
若成功,则输出以下信息:
若不成功则环境变量配置不正确,重新进行配置。
2.知识点的总结
(1).首先介绍下Java和C的区别
Java不支持头文件、不支持宏定义,且Java类型转换不同,不再使用指针。Java对内存的分配是动态的,十分的灵活。但是话虽如此,还是二者在代码的用法上还是十分相似,Java与python在代码的用法上也十分相似(自我认为)。
(2).代码的学习笔记
本文用的是IDE软件来讲解代码,当然如果用记事本等软件也支持。
1.Java的程序运行要在相应的类内(用HelloWorld来演示)
public class HelloWorld{
public static void main(string[] args)
{
System.out.println("HelloWorld");
}
}
正如上述,代码的相应操作要在对应的类内。
public class HelloWorld{
public static void main(string[] args)
{
//代码内容
}
}
当然类名等我们都可以需要自行修改。
(如果使用IDE,可以通过直接输入psvm来快捷打出public static void main(string[] args))
2.Print、scanf操作
System.out.println(15+1);//输出16,输出计算结果
System.out.println("HelloWorld");//输出HelloWorld
System.out.println("a"+"b"); //输出ab
int x = 5;
System.out.println("x:"+x); //输出x:5
在IDE中,可以输入sout快捷实现System.out.println()。
import java.util.Scanner;
public class HelloWorld{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
String x = sc.nextInt();
String s = reverse(x);
}
}
上述代码实现scanf操作,并将输入结果存在x中。其中reverse(x)实现的是字符串的反转。
3.数据类型
Java的数据类型同C一般存在int、double、float等,但注意每个数据类型的等级是不一样的。
其中对标识符有以下规定:
1.由数字、字母、下划线_、美元符$组成
2.不能以数字开头
3.不能是关键字(例如Class)
4.区分大小写
强制类型转换:
强制类型转换含义:高等级转换为低等级的字节(低等级到高等级不需要强制转换)
double x = 88.88;
int y = (int)x;
System.out.println("y");
//输出88
4.运算符
同C一般支持加、减、乘、除、取余。
System.out.println(d + f);
System.out.println(d - f);
System.out.println(d * f);
System.out.println(d / f);
System.out.println(c % h);
char m = 'A'; //值为65
System.out.println(m+1); //输出66
算术表达式中包含多个基本数据类型的值的时候,整个算术表达式的类型会自动进行提升,正如上述m+1操作。
等级顺序:byte,short,char → int long →float→ double
5.if、while、for、switch用法
(个人感觉跟C一样)
if:
/*
if(判断)
{
执行操作;
}else{
执行操作;
}
*/
int a = 0;
int b = 33;
if(a>33)
{
a = 0;
}else
{
b = 0;
}
while:
/*
while(判断)
{
循环语句
}
do{
循环语句
}while(判断)
*/
while(true)
{
System.out.println("打工!");
}
for:
/*
for(变量;条件;操作)
{
循环操作
}
*/
for(int i = 0;i<100;i++)
{
System.out.println("干饭!");
}
switch:
/*
switch(表达式)
{
case 1:
语句1;
break;
case 2:
语句2;
break;
......
default:
语句n+1;
break;
}
*/
switch(i)
{
case 1:
System.out.println("干饭!");
break;
case 2:
System.out.println("打工!");
break;
......
default:
System.out.println("累了!");
break;
}
6.方法定义
方法定义按C和python的理解就是定义函数
/*
通用格式
public static 返回值类型 方法名(参数)
{
方法体;
return 数据;
}
*/
public class MethodDemo
{
public static void methodOne()
{
//代码片段1
}
public static void methodOne2()
{
//代码片段2
}
}
注意:方法不能嵌套方法定义,但是可以嵌套使用
方法要注意返回值
方法的重装载:
public class MethodDemo
{
public static int methodOne(int a,int b)
{
return a+b;
}
public static double methodOne(double a,double b)
{
double c = methodOne1(a,b);
return c;
}
public static double methodOne1(double a,double b)
{
return a*b;
}
}
同一个方法名可以重装载多个用法,根据使用时输入的数据不同则进行不同的计算,同时不同函数间可以实现嵌套使用。
7.类和对象
类是Java程序的基本组成单位。
(1).类是对象的数据类型
(2).类是具有相同属性和行为的一组对象的集合 (3).属性: 对象具有的各种特征,每个对象的每个属性都拥有特定的值 (4).行为: 对象能够执行的操作
/*
public class 类名:
{
//成员变量
变量1的数据类型 变量1;
变量2的数据类型 变量2;
...
//成员方法
方法1;
方法2;
...
}
*/
public class phone{
String brand;
int price; //成员变量
private int num = 0;
//用private修饰后,num只能在phone这个类中使用,外部无法调用
public void call(int price)
{
int a; //局部变量
this.price = price;
//this可以区别局部变量和成员变量,此行实现相同名称的局部变量和成员变量的赋值
System.out.println("打电话");
}
}
调用类:
public class PhoneDemo{
public static void main(string[] args)
{
//创建对象
phone p = new phone();
//调用成员变量和方法
p.brand = "华为";
p.price = 10000;
//注意若未给变量赋值,则默认String为null,int为0
p.call();
//执行以下操作会将P给覆盖,即更改
phone m = p;
m.brand = "小米";
m.price = 9000;
//注意若未给变量赋值,则默认String为null,int为0
m.call();
}
}
标准类制作:
public class Student_message {
private String name; //姓名
private String age; //年龄
private String num; //学号
private String address;
public Student_message() {
}
public Student_message(String name, String age, String num, String address) {
this.name = name;
this.age = age;
this.num = num;
this.address = address;
}
public String getName() {
return name;
}
public String getAge() {
return age;
}
public String getNum() {
return num;
}
public String getAddress() {
return address;
}
public void setName(String name) {
this.name = name;
}
public void setAge(String age) {
this.age = age;
}
public void setNum(String num) {
this.num = num;
}
public void setAddress(String address) {
this.address = address;
}
}
其中,若是调用Student_message(),则可以进行setNum()等方法操作,若调用Student_message(String name, String age, String num, String address)则只按此方法执行。
8.字符串的调用
StringBuildfer:
如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费内存空间,而这种操作还不可避免。
而StringBuilder可以解决这个问题
public class StringBuilder{
public static void main(String[] args)
{
StringBuilder sb = new StringBuilder();
//建立空的StringBuilder
StringBuilder sb2 = new StringBuilder("Hello");
//根据字符串来建立StringBuilder
sb.append("HelloWorld");
sb.append("1").append(0).append("end");
//利用append不断增加字符串内容
}
}
9.ArrayList集合
集合类的特点:提供一种存储空间可变的存储模型,存储的数据容呈可以发生改变
import java.util.ArrayList;
public class ArrayListDemo01{
public class void main(String[],args)
{
ArrayList<String> array = new ArrayList<String>();
array.add("Hello");
array.add("World");
System.out.println(array);
/*
输出:
【Hello,World】
*/
array.add(index:1,element:"javase");
/*
输出:
将集合1位置改为"javase",原1位置内容后移。
*/
array.remove(o:"Hello");
array.remove(index:1);
//删除Hello 删除索引为1的元素
array.set(1,"javase");
//将索引1的位置改为“javase”
array.get(0);
//返回索引为0的元素值
int num = array.size();
//num得到集合的大小
}
}
10.用以上知识写学生系统
(1)新建学生信息类
public class Student_message {
private String name; //姓名
private String age; //年龄
private String num; //学号
private String address;
public Student_message() {
}
public Student_message(String name, String age, String num, String address) {
this.name = name;
this.age = age;
this.num = num;
this.address = address;
}
public String getName() {
return name;
}
public String getAge() {
return age;
}
public String getNum() {
return num;
}
public String getAddress() {
return address;
}
public void setName(String name) {
this.name = name;
}
public void setAge(String age) {
this.age = age;
}
public void setNum(String num) {
this.num = num;
}
public void setAddress(String address) {
this.address = address;
}
}
(2)新建学生信息操作菜单,并定义相关功能
[外链图片转存失败,源站可能有防盗链机制,建议将Q图片22110013305654](D:\图片\文档需要\QQ图片0211001135058.png)D:\图片\文档需要\QQ图片20211001135058.png)]import java.util.Arrays;
import java.util.Scanner;
import java.util.ArrayList;
//学生信息操作菜单
public class Student {
public static void main(String[] args) {
ArrayList<Student_message> array = new ArrayList<Student_message>();
while(true) {
System.out.println("-------------学生管理系统-------------");
System.out.println("1.添加学生");
System.out.println("2.删除学生");
System.out.println("3.修改学生");
System.out.println("4.查看所有学生");
System.out.println("5.退出");
System.out.println("请输入您的选择");
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
switch (line) {
case "1":
addStudent(array);
break;
case "2":
deleteStudent(array);
break;
case "3":
updataStudent(array);
break;
case "4":
findStudent(array);
break;
case "5":
System.exit(0);
default:
System.out.println("查询错误");
break;
}
}
}
//存储学生信息
public static void addStudent(ArrayList<Student_message> array)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生的学号");
String num = sc.nextLine();
boolean flag = isused(array,num);
if(flag)
{
System.out.println("输入学号已存在");
return;
}
System.out.println("请输入学生的姓名");
String name = sc.nextLine();
System.out.println("请输入学生的地址");
String address = sc.nextLine();
System.out.println("请输入学生的年龄");
String age = sc.nextLine();
Student_message stu = new Student_message();
stu.setAddress(address);
stu.setAge(age);
stu.setNum(num);
stu.setName(name);
array.add(stu);
System.out.println("存储学生信息成功");
}
//学生信息查看
public static void findStudent(ArrayList<Student_message> array)
{
if(array.size() == 0)
{
System.out.println("未录入学生信息,请录入信息后再查询");
}else
{
System.out.println(" 学号 姓名\t地址\t年龄 \t");
for (int i = 0; i < array.size(); i++) {
Student_message stu = array.get(i);
System.out.println(stu.getNum() + "\t" + stu.getName() + "\t" + stu.getAddress() + " \t" + stu.getAge());
}
}
}
public static void deleteStudent(ArrayList<Student_message> array)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入你需要删除的学生学号");
String stu = sc.nextLine();
for(int i = 0;i<array.size();i++)
{
Student_message sd = array.get(i);
if(sd.getNum().equals(stu))
{
array.remove(i);
System.out.println("删除成功");
break;
}else
{
System.out.println("未找到学生信息,请重新查询");
return;
}
}
}
public static void updataStudent(ArrayList<Student_message> array)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入需要修改的学生学号");
String stu = sc.nextLine();
for(int i = 0;i<array.size();i++)
{
Student_message sd = array.get(i);
if(sd.getNum().equals(stu))
{
System.out.println("请输入要更新的学生学号");
String num = sc.nextLine();
boolean flag = isused(array,num);
if(flag)
{
System.out.println("输入学号已存在");
return;
}
System.out.println("请输入要更新的学生姓名");
String name = sc.nextLine();
System.out.println("请输入要更新的学生地址");
String address = sc.nextLine();
System.out.println("请输入要更新的学生年龄");
String age = sc.nextLine();
Student_message st = new Student_message();
st.setNum(num);
st.setName(name);
st.setAddress(address);
st.setAge(age);
array.set(i,st);
System.out.println("修改学生信息成功!");
break;
}else
{
System.out.println("请输入正确的学生信息");
break;
}
}
}
public static boolean isused(ArrayList<Student_message> array,String num)
{
boolean flag = false;
for(int i = 0;i<array.size();i++)
{
Student_message stu = array.get(i);
if(stu.getNum().equals(num))
{
flag = true;
break;
}
}
return flag;
}
}
效果演示: