大家好,我今天才开始写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);
	}
}
 
好啦,这两天的基础学习总结到此,下期总结习题。若有错误,请大家多多指正。










