目录
4 StringBuilder 和 String 的相互转换
第一章 java入门
环境配置
常用cmd命令
打开cmd
安装JDK:Java工具包
IDEA
1 IDEA概述
(1)IDEA概述:IDEA全称IntelliJ IDEA,是用于Java语言开发的集成环境,是业界公认的目前用于Java程序开发最好的工具。
是可以把代码编写、编译、执行、调试等多种功能综合到一起的开发工具。
(2)IDEA的下载和安装: 参考这篇博客:IDEA的下载和使用安装
2 IDEA中HelloWorld
步骤:
(1)创建一个空项目(JavaSE_Code)
(2)创建一个新模块(idea_test)
(3)在idea_test模块下的src下创建一个包(com.itheima)
(4)在com.itheima包下新建一个类(Helloworld)
(5)在Helloworld类中编写代码
(6)在idea中执行程序
3 IDEA中项目结构
Project–>模块–>包–>类
![](https://img-blog.csdnimg.cn/948845b68c01409993e7c86785b766a6.png)
4 IDEA中内容辅助键和快捷键
(1)快速生成语句:
快速生成main()方法:psvm,回车
快速生成输出语句:sout,回车
(2)内容辅助键:
ctrl+alt+space,内容提示,代码补全等
(3)快捷键:
注释:
单行:选中代码,ctrl+/
多行:选址代码,ctrl+shift+/
格式化:
ctrl+alt+L
第二章 java基础概念
字面量
基本数据类型
标识符
键盘录入
第三章 运算符
隐式转换
强制转换
三元运算符
其他运算符
随机数Random
原码反码补码
第四章 判断与循环
该篇章语法与c、c++类似 ,所以不在此过多论述,感兴趣可以学一下c语言。
一、判断
if语句
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
···
default:
语句体n+1;
[break;]
}
switch语句
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
···
default:
语句体n+1;
[break;]
}
二、循环语句
for
for (初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
while
初始化语句;
while (条件判断语句){
循环体语句;
条件控制语句;
}
do…while 循环语句
初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句);
第五章 数组
一、 数组定义格式
概念:数组(array)是一种用于存储多个相同类型数据的存储模型
数组的定义格式:
(1)格式1:数据类型[ ] 变量名,例如:int [ ] arr。定义了一个int类型的数组,数组名是arr。
(2)格式2:数据类型 变量名[ ], 例如:int arr[ ]。定义了一个int类型的变量,变量名是arr数组。
二、数组初始化之动态初始化
初始化:就说为数组中的数组元素分配内存空间,并为每个数组元素赋值。
数组初始化类型:动态初始化、静态初始化
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
动态初始化格式:数据类型 [ ] 变量名 = new 数据类型[数组长度],例如:int [] arr = new int[3]
public class ArrayDemo{
public static void main(String[] args){
int[] arr = new int[3]
/*
左边:
int:说明数组中的元素是int类型
[]:说明这是一个数组
arr:这是数组的名称
右边:
new:为数组申请内存空间
int:说明数组中的元素类型是int类型
[]:说明这是一个数组
3:数组长度,其实就说数组中的元素个数
}
}
三、 数组元素访问
数组变量访问方式:数组名
数组内部保存数据的访问方式:数组名[索引]
什么是索引:索引是数组中数据的编号方式,用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名。注意:索引是从0开始的、索引是连续的、索引逐一增加,每次加1。
public class ArrayDemo{
public static void main(String[] args){
int[] arr = new int[3]
//输出数组名
System.out.println(arr); # out>> [i@880ec60 内存地址
//输出数组中的元素
System.out.println(arr[0]); # out>> 0
System.out.println(arr[0]); # out>> 0
System.out.println(arr[0]); # out>> 0
}
}
四、Java内存分配
五、数组初始化之静态初始化
静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
格式1:数据类型 [ ] 变量名 = new 数据类型[ ] {数据1, 数据2, 数据3, …},例如:int [ ] arr = new int[ ] {1, 2, 3};
格式2:数据类型 [ ] 变量名 = {数据1, 数据2, 数据3, …},例如:int [ ] arr = {1, 2, 3};
public class ArrayTest01{
public static void main(String[] args){
//定义数组
int[] arr = {1 , 2, 3, 4, 5};
//使用通用的遍历格式
for(int x=0; x<arr.length; x++){
System.out.println(arr[x]);
}
}
}
第六章 方法(与c、c++函数类似)
概念:方法(Method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集。
注意:
(1)方法必须先创建才可以使用,该过程称为方法定义;
(2)方法创建后并不是直接运行的,需要手动使用后才执行,该过程称为方法调用。
实例
public class MethodDemo
{
public static void main(String[] args)
{
//调用方法
isEvenNumber();
}
//需求:定义一个方法,在方法中定义一个变量,判断该数据是否是偶数
public static void isEvenNumber()
{
//定义变量
int number = 10;
number = 9;
//判断该数是否是偶数
if(number%2 ==0)
{
System.out.println(true);
}
else
{
Systm.println(false);
}
}
}
第七章 面向对象基础
一、类和对象
1. 什么是对象:万物皆对象,客观存在的事物皆为对象。
2. 什么是对象的属性: 对象具有的各种特征,每个对象的每个属性都拥有特定的值。
3. 什么是对象的行为: 对象能够执行的操作。
4. 什么是类:类是对现实生活中一类具有共同属性和行为的事物的抽象,确定对象将会拥有的属性和行为。类是JAVA程序的基本组成单位。
类的特点:
(1)类是对象的数据类型;
(2)类是具有相同属性和行为的一组对象的集合。
5. 类和对象的关系:类是对象的抽象,对象是类的实体。
6. 类的组成:属性和行为。
属性:在类中通过成员变量来体现(类中方法外的变量)
行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)
7. 类的定义:
public calss 类名{
// 成员变量
变量1的数据类型 变量1;
变量2的数据类型 变量2;
...
//成员方法
方法1;
方法2;
...
}
8. 对象的使用:
(1)创建对象:类名 对象名 = new 类名();
(2)使用对象:使用成员变量:对象名.变量名;使用成员方法:对象名.方法名()
二、成员变量和局部变量
1. 成员变量:类中方法外的变量。
2. 局部变量:类中方法中的变量。
public class Student{
String name; // 成员变量
public void study(){
int i = 0; // 局部变量
System.out.println('Good good study!');
}
int age; // 成员变量
}
3. 成员变量和局部变量的区别:
三、封装
1 private关键字
作用:private是一个关键字;它可以修饰成员(成员变量和成员方法);作用是保护成员不被别的类使用,被private修饰的成员只能在本类中才能访问。
使用:针对private修饰的成员变量,如果需要被其他类使用,应提供相应的操作。
(1)提供 get变量名() 方法,用于获取成员变量的值,方法用public修饰;
(2)提供 set变量名(参数)方法,用于设置成员变量的值,方法用public修饰。
public class Student{
//成员变量
String name;
private int age;
//提供get/set方法
public void setAge(int a){
if (a<0 || a>120){
System.out.println("你给的年龄有误");
}else{
age = a;
}
}
public int getAge(){
return age;
}
}
2 this关键字
(1)this修饰的变量用于指代成员变量。
方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量;
方法的形参没用与成员变量同名,不带this修饰的变量指的是成员变量。
(2)this代表所在类的对象引用。方法被哪个对象调用,this就代表哪个对象。
3 封装
1. 封装概述:封装是面向对象三大特征之一(封装、继承、多态),是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的。
2. 封装原则:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问成员变量private,提供对应的getXxx() / setXxx()方法。
3. 封装优点:通过方法来控制成员变量的操作,提高了代码的安全性。把代码用方法进行封装,提高了代码的复用性。
4 构造方法
概念:构造方法是一种特殊的方法,用于创建对象,功能是完成对数据的初始化。
格式:
public class 类名{
修饰符 类名(参数){
}
}
注意事项:
(1)构造方法的创建:如果没有定义构造方法,系统将给出一个默认的无参数构造方法;如果定义了构造方法,系统将不再提供默认的构造方法。
(2)构造方法的重载:如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法。
(3)推荐的使用方式:无论是否使用,都手工书写无参数构造方法。
5 标准类的制作
(1)成员变量:使用private修饰
(2)构造方法:提供一个无参构造方法、提供一个带多个参数的构造方法。
(3)成员方法:提供每一个成员变量对应的setXxx() / getXxx();提供一个显示对象信息的show()。
(4)创建对象并为其成员变量赋值的两种方式:无参构造方法创建对象后使用setXxx()赋值;使用带参构造方法直接创建带有属性值的对象。
public class Student{
// 成员变量
private String name;
private int age;
// 构造方法
public Student() {}
public Student(String name, int age){
this.name = name;
this.age = age;
}
// 成员方法
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(){
this.age = age;
}
public int getAge(){
return age;
}
public void show(){
System.out.println(name + "," + age);
}
}
public class StudentTest{
public static void main(String[] args){
// 无参数构造方法创建对象后使用setXxx()赋值
Student s1 = new Student();
s1.setName("Kobe");
s1.setAge("24");
s1.show();
// 使用带参构造方法直接创建带有属性值的对象
Student s2 = new Student(name:"Kobe", age:24);
s2.show();
}
}
四、对象内存图
第七章 字符串(String)
String类在java.lang包下,所以使用的时候不需要导包。
API
一、String构造方法
二、字符串比较
用户登录案例:
package string;
import java.util.Scanner;
public class string001 {
public static void main(String[] args){
// 已知用户名和密码
String username = "Kobe";
String password = "24&8";
// 用循环实现多次机会,这里的次数明确,采用for循环实现
for(int i=0; i<3; i++){
// 键盘要录入登录的用户名和密码,用Scanner实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = sc.nextLine();
System.out.println("请输入密码:");
String pwd = sc.nextLine();
// 用键盘录入的用户名和密码和已知的用户名和密码进行比较,并给出相应的提示
if (username.equals(name) && password.equals(pwd)){
System.out.println("登录成功");
break;
} else{
if ((2-i) == 0){
System.out.println("登录失败,你的账号已被冻结!");
} else{
System.out.println("用户名或密码输入错误,你还有" + (2-i) + "次输入机会!");
}
}
}
}
}
遍历字符串
package string;
import java.util.Scanner;
public class string002 {
public static void main(String[] args){
// new一个Scanner对象接收输入的字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String line = sc.nextLine();
// 定义for循环,用charAt()方法遍历字符串
for (int i=0; i< line.length(); i++){
System.out.println(line.charAt(i));
}
}
三、StringBuilder
1 StringBuilder概述
StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是StringBuilder对象中的内容是可变的。
![](https://img-blog.csdnimg.cn/0b866f8a11ad4313be25e5935a52245e.png)
2 String和StringBuilder的区别
String的内容是不可变的;StringBuilder的内容是可变的。
3 StringBuilder常用方法
package string;
/*
StringBuilder构造方法:
public StringBuilder():创建一个空白可变字符串对象,不含有任何内容。
public StringBuilder(String str):根据字符串的内容,来创建可变字符串对象。
*/
public class string003 {
public static void main(String[] args){
// public StringBuilder()
StringBuilder sb = new StringBuilder();
System.out.println("sb:" + sb);
System.out.println("sb.length():" + sb.length());
// public StringBuilder(String str)
StringBuilder sb2 = new StringBuilder("hello");
System.out.println("sb2:" + sb2);
System.out.println("sb2.length():" + sb2.length());
}
}
package string;
/*
StringBuilder的添加和反转方法:
pubic StringBuilder append(任意类型):添加数据,并返回对象本身;
public StringBuilder reverse(): 返回相反的字符序列
*/
public class string004 {
public static void main(String[] args){
// 创建对象
StringBuilder sb = new StringBuilder();
// 链式编程
sb.append("hello ").append("world ").append("!");
System.out.println("sb: " + sb);
// public StringBuilder reverse():返回相反的字符序列
sb.reverse();
System.out.println("sb: " + sb);
}
}
4 StringBuilder 和 String 的相互转换
1. StringBuilder转换为String
public String toString():通过toString()就可以实现把StringBuilder转换为String。
2. String转换为StringBuilder
public StringBuilder(String s):通过构造方法就可以实现把String转换为StringBuilder。
package string;
public class string005 {
public static void main(String[] args){
// 先创建一个对象
StringBuilder sb = new StringBuilder();
sb.append("hello");
// 将StringBuilder转换为String
String s = sb.toString();
System.out.println(s);
// 将String转换为StringBuilder
StringBuilder s2 = new StringBuilder(s);
System.out.println(s2);
}
}
实例:拼接字符串
需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。例如,数组为int [] arr = {1, 2, 3}; ,执行方法后的输出结果为:[1,2,3]。
public class string006 {
public static void main(String[] args){
int[] arr = {1,2,3,4,5};
//调用方法,用一个变量接收结果
String s = array2string(arr); // 对数组的格式进行转换
// 输出结果
System.out.println(s);
}
public static String array2string(int[] arr){
// 在方法中用 StringBuilder 按照要求进行拼接,并把结果转成 String 返回。
StringBuilder sb = new StringBuilder(); // new一个StringBuilder对象
sb.append('[');
for (int i=0; i<arr.length; i++){
if(i == arr.length-1){
sb.append(arr[i]);
}
else{
sb.append(arr[i]).append(','); // 这里不可以用 + 号来拼接字符串
}
}
sb.append(']');
String s = sb.toString();
return s;
}
}
实例:字符串反转
import java.util.Scanner;
public class string007 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String line = sc.nextLine();
// 调用方法,传入输入的字符串,返回反转后的字符串
String s = reverse(line);
System.out.println(s);
}
public static String reverse(String s){
StringBuilder sb = new StringBuilder(s);
String reverse_s = sb.reverse().toString();
return reverse_s;
// 简便的语句:return new StringBuilder(s).reverse().toString();
}
}
第八章 集合
1 集合基础
集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变。集合类有很多,本章着重介绍:ArrayList。
2 ArrayList成员方法
构造
结果
结果:
public E remove(int index):删除指定索引处的元素,返回被删除的元素
结果:
结果:
这里出现了索引越界
public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
结果:
public E get(int index):返回指定索引处的元素
结果:
练习一:
练习二:
练习三:
案例:Java 学生管理系统
请参考:学生管理系统https://blog.csdn.net/m0_64378422/article/details/131516217