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