0
点赞
收藏
分享

微信扫一扫

JAVA基础知识

霍华德 2022-01-08 阅读 104

大家好,我今天才开始写CSDN博客,希望在实训中通过CSDN来记录我所学的知识,希望对大家有帮助。
PS:推荐书籍《Java核心卷I》和II,《达芬奇笔记》(老师推荐,对学习习惯行为有帮助)想要学好习,知识要学三遍哦.

JAVA的基础知识

1.Java是一种解释型的语言,是面向对象的语言,此外面向对象的语言还有(python,c#,VB.NET)
PS:基于对象的语言:VB,JavaScript

2.JDK和JRE的区别

JRE:Java Runtime Environment(java运行时环境),即java程序的运行时环境,包含了java虚拟机,java基础类库。
JDK:Java Development Kit(java开发工具包)
3.下载Notepad++
对程序员帮助很大,具体操作步骤,看这位博主的Notepad++使用教程
4.撰写java的源程序的工具是什么?
记事本,eclipse,idea
源程序(.java) —javac编译器–> 编译后的文件即字节码文件(.class) ----java—> 执行
5.eclipse的简单学习
(1)放大window加+可以放大屏幕分辨率
(2)工作空间----->工程------包-----
(3)快捷键:
ctrl+ 使窗口字体放大,
ctrl- 使窗口字体缩小
alt + / 快速提示
ctrl+D 快速删除行
ctrl+F 快速替换
ctrl+/ 注释
(4)在面板上,有小窗口找不到了 怎么办?
window-----> show view里面寻找
6.数据类型:分类(看思维导图)
推荐看这位博主总结的数据类型思维导图
PS: 面试可能会出的问题:byte有几个字节?
整数类型:byte:1字节=8位
取值范围:-128~127(-2的(8-1)次方 ~2的(8-1)次方-1
字符类型:char:2字节
char a =‘A’
char b='张‘
7.声明变量和赋值
int age = 18;等价于下面两条语句
int age;
age = 19;
8.接收键盘输入
举个例子,求一个输入的四位数字的个位数,十位,百位分别是多少

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);//scanner扫描输入
		System.out.println("请输入一个整数:");
		int num = scan.nextInt();
		int num1 = num%10;  //个
		int num2 = (num/10)%10; //十
		int num3 = (num/100)%10; //百
//如果算千的话就是int num4 = num/1000;
		System.out.println(num1+" "+num2+" "+num3);

	}

PS:// 单行注释 , /* … */ 多行注释
9.运算符
(1)算数运算符: + - * / %

int num1 = 30;
int num2 = 4;
System.out.println( num1/num2 );   // 结果是:7 
System.out.println( (double)num1/(double)num2 ); // 结果是:7.5

(2)比较运算符: > < != >= <=

//从键盘上输入一个年龄,我们判断是否符合入学年龄(7岁)
System.out.println("请输入年龄:");
int age = new Scanner(System.in).nextInt();
		
if( age >= 7 )
{
	System.out.println("符合入学条件!");
}
else
{
	System.out.println("不符合入学条件!");
}

(3)逻辑运算符:&& , || , !

//从键盘接收一个年份数据(四位),判断该年份是不是闰年
//什么是闰年?
//能够被4整除且不能被100整除或者能够被400整数
System.out.println("请输入要判断的年份:");
Scanner sc = new Scanner(System.in);
		
int year = sc.nextInt();
if( (year%4 == 0&&year%100!=0)  ||   year%400 == 0 )
{
	System.out.println("闰年");
}
else
{
    System.out.println("平年");
}

(4)三元运算符:? :

System.out.println("请输入要判断的年份:");
Scanner sc = new Scanner(System.in);
		
int year = sc.nextInt();
//boolean bln =  (year%4 == 0&&year%100!=0)  ||   year%400 == 0;
//System.out.println( bln ? "闰年" : "平年" );
		
System.out.println( 
				((year%4 == 0&&year%100!=0)  ||   year%400 == 0) ? "闰年" : "平年" );		

(5)其他: ++ – += << >> and so on

public class T01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i = 1;
		System.out.println(i++);//结果:1
		System.out.println(++i);//结果:3
		System.out.println(i--);//结果:3
		System.out.println(--i);//结果:1
		
		System.out.println(".......");
		int n = 4;
		n += 2;
		System.out.println(n);//结果是6
		
		System.out.println(".......");
		System.out.println(2<<3);//结果是16  二进制左移三位10
		System.out.println(2<<(3-1));//结果是8  二进制左移两位10

	}

}

10.流程控制
(1)if分支

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("请输入一个年份:");
		Scanner scan = new Scanner(System.in);//scanner扫描输入
		int year = scan.nextInt();
		if (year%4==0&&year%100!=0) {
			System.out.println("是闰年");
		}
		else if(year%400==0){
			System.out.println("是闰年");
		}
		else {
			System.out.println("是平年");
		}

	}

(2)switch分支

public class T02 {

	public static void main(String[] args) {
	    String key = "A";//S要大写,在java.lang包里,因为是最基本的,所以不需要引用
		switch(key) {
		case "A":
			System.out.println("优秀");
			break;
		case "B":
			System.out.println("良好");
			break;
		case "C":
			System.out.println("一般");
			break;
		case "D":
			System.out.println("差");
			break;
		}
//key的数据类型要求:可以是字符踹类型。jdk1.7上,char,int,short,byte
//使用场景:if是可以替代switch,反之不行。switch分支适合非连续性的条件
	}

}

11.循环结构
(1)for计数循环
(2)while循环
break跳出循环体
(3)do-while循环
至少执行一次

public class T03 {

	public static void main(String[] args) {
		//第一个表达式:初始化计数器
	    //第二个表达式:循环条件
		//第三个表达式:计数规则
		for (int i = 0; i < 5; i++) { //快捷键 alt + /
			System.out.println("Hello World!");
			//System.err.println("Hello World!");打印出来的就是红色的
			//for (int i = 0; i < 5; )是无限循环
		}
		
		
		System.out.println("......");
		int counter = 0;
		while(counter<5) {
			System.out.println("Hello World!");
			counter++;
		}
		
		
		System.out.println("......");
		counter = 0;
		do {
			System.out.println("Hello World!");
			counter++;
		}while(counter<5);
	}

}

(4) for增强版循环(for-each):一般用于遍历数组和集合

import java.util.Scanner;

//循环录入学生的姓名,一共录入5个,并且存入到数组里面
public class T05 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//1.声明一个长度为五的数组,数组的类型是字符串
		String[] names=new String[5];
		//2.循环这个数组,在循环的过程中,不断提示用户输入学生姓名将得到的学生姓名赋值给数组
		int i = 0;
		Scanner scan = new Scanner(System.in);
		for (i=0;i<=names.length;i++) 
		{
			System.out.println("输入学生姓名");
			String name= scan.next();
		    names[i] =name;
		}
		//3. 循环打印出来,看一看
		for(String name:names) {//冒号后数组名,冒号前是接收循环数组的元素
			System.out.println(name);
		}

	}

}

12.数组-----一维数组
在JAVA里面,
(1)一个数组里面的元素必须是同一种数据类型
(2)数组的长度是固定的
(3)数组的空间是连续的
引用类型,数组的定义和赋值

public class T09 {

	public static void main(String[] args) {
		int[] scores=new int[5];
		scores[1]=89;
		int score=scores[1];
		System.out.println("score");

	}

计算数组长度:数组名字.length

13.方法
(1)代码包装有三个层次:方法,类,包
(2)结构:
访问修饰符 返回值类型 方法的名字(参数列表){
//方法体
//return 返回值;
}

public class T09 {

	public static void main(String[] args) {
		display("刘邦");
		
		int sum = add(2,3);
		System.out.println(sum);
	}
	
	public static int add( int a , int b )
	{
		return a + b;
	}
	
	public static void display( String name )
	{
		System.out.println(name);
	}
}

PS:接收用户输入Scanner的方法,看这位博主总结的文章
(3)方法的用途:提高复用,结构清晰,提高可读性,提高维护性
14.可变参数
本质上是数组,使用该参数的时候,就和数组的使用几乎一样,只是调用的方式更多了。Java支持一个简便的for循环,称之为for-each循环,不使用下标变量就可以顺序地遍历整个数组。
方法重载:在同一个类里面,同名不同参,参数类型或者个数不同。

public class T02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String[] names = {"谭维维","易烊千玺","周杰伦"};
		myPrint(names);
		
		//假如不喜欢任何歌星,传个空数组;
		String []names1 = {};
		myPrint(names1);
		
		//下面是可变参数的调用
		System.out.println("................");
		myPrint1(names);
		myPrint1();//可以不传参数
		myPrint1("金智秀");
	}
	//数组
	public static void myPrint(String[] names) {
		for (String name:names) {
			System.out.println(name);
		}
	}
	//打印用void,数组用String//把参数的数组[]改为...可变参数
	//因为数组具有局限性,它必须传入一个数组,哪怕是个空数组,用可变参数来解决
	public static void myPrint1(String... names) {
		for(String name:names) {//数组不会越界
			System.out.println(name);//逐个输出遍历结果
		}
	}
	//方法重载:在同一个类里面,同名不同参
	public static void myPrint() {
		
	}
	
}

15.类和对象(最核心的部分)
什么是类?(名词) 什么是对象?
(1)类是同一类事物的抽象,类是相同属性和行为抽象(抽象出来的模板)。对象是类的实例,通过new来实例化,new就是在堆上开辟空间。写类的时候要注意一些属性和行为,也就是类里面定义一些方法(属性)和变量(行为)。

class Student
{
	public String studentId;
	public String studentName;
	public boolean studentSex;
	
	public void study();
	{
		System.out.println("学生都要学习");
	}
}
package com.changxinxin.test03;
//案例需求:定义一个人类Person
//该类中应该有两个属性姓名name和年龄age。
//再定义显示display方法将姓名和年龄打印出来。
//在main方法中创建人类的实例,为属性赋值,然后将信息显示。
public class T06 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Person person = new Person();
		person.name="易烊千玺";
		person.age= 22;
		
		person.display();

	}   
}
class Person{
	//属性:姓名,年龄
	public String name;
	public int age;
	//方法:打印
	public void display()//方法名首字母小写
	{
		System.out.println(name+" "+age);
	}
}

PS:美化格式source------>format
16.构造函数
作用是啥?本质是构造对象的。如果一个类没有构造函数就不能产生对象。如果自己不在类里面定义构造函数,系统会给我们提供一个默认的无参的构造函数(当自己定义了构造函数以后,系统会给我们提供默认的无参的构造函数就失效了。构造函数的名字和类名一样,没有返回值。下面举个例子:教师类
具体操作步骤:
1.定义教师类
2.在定义的类里面写属性和变量,也就是写方法和函数
3.在公共类里用构造函数产生对象,开辟空间。
4.为成员变量赋值
5.调用成员方法

//类和对象
//类就是相同属性和行为抽象
//对象是类的实例,通过new来实例化,new就是在堆上开辟空间
public class W03 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//1.产生对象,调用方法。通过构造函数产生对象,下一句的括号就是构造函数的意思
		Teacher teacher = new Teacher();//new开辟一个空间,产生一个Teacher类型对象
//2.为成员赋值
		//成员访问符是.
		teacher.tid = 1001;
		teacher.tname = "安琪拉";
		teacher.age = 6;
		teacher.course = "武术";
//3.调用成员方法
		teacher.teach();//调用成员方法
		System.out.println(teacher.tid+" "+teacher.tname+" "+teacher.course);

	}

}
class Teacher{
	//属性(字段):编号,姓名,年龄,课程
	public int tid;
	public String tname;
	public int age;
	public String course;
	
   //行为:授课
	public void teach() {
		System.out.println("教师要授课");
	}
}

可以利用构造函数对数据进行初始化工作

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Person person = new Person();
		person.name="易烊千玺";
		person.age= 20;
		
		person.display();
		//调用带参数的构造函数
		Person p1 = new Person("朴彩英",14);
		p1.display();

	}   
}
class Person{
	//属性:姓名,年龄
	public String name;
	public int age;
	//方法:打印
	//方法重载了,一出生就有属性
	public Person() {
		
	}
	public Person(String pname,int page) {
		name = pname;
		age= page;
	}
	public void display()//方法名首字母小写
	{
		System.out.println(name+" "+age);
	}
}

17.权限访问修饰符
public:公共的,任何地方都可以。
private:私有的,本类里面可以访问
18.this 关键字
this指代当前类的对象的应用
作用:(1)引用当前对象的成员
(2)this(参数列表…)进行构造函数之间的调用

public class T06 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Person person = new Person();
		person.name="易烊千玺";
		person.age= 20;
		
		person.display();
		//调用带参数的构造函数
		Person p1 = new Person("朴彩英",14);
		p1.display();

	}   
}
class Person{
	//属性:姓名,年龄
	public String name;
	public int age;
	//方法:打印
	//方法重载了,一出生就有属性
	public Person() {
		System.out.println("这是我喜欢的人");
	}
	public Person(String name) {
		this();
		this.name = name;
	}
	public Person(String name,int age) {
		this(name);
		this.age= age;
	}
	public void display()//方法名首字母小写
	{
		System.out.println(name+" "+age);
	}
}

好啦,这两天的基础学习总结到此,下期总结习题。若有错误,请大家多多指正。

举报

相关推荐

0 条评论