总结一下Java基础知识

重中之重-----------基础

    底层结构决定上层建筑,所以,基础很重要。

    自信心

 在开始说基础之前先说明一下自信心的重要性,没有自信心学什么东西都学不好。

    核心自信*****

 核心自信从三个方面来说

     客观自信

    通过实践,行动,积累成功经验,来反哺主观自信。

     主观自信

    改变思维认知,扭转以往的错误思维。

   生理状态

    决定是否有能量面对主观焦虑。

  以上是正确的自信心培养方式, 举例一些反例,来说明核心自信和条件自信的区别:

  大众价值观(有钱了就自信)

  裙带关系(有朋友陪伴就觉得自信)

  特殊技能(对某方面相对擅长或有经验,在使用该技能时,就觉得自信)

  角色扮演(当自己强制扮演某个角色时就特别有自信,当被戳穿时,就会失去自信)

总结:

  通过外在条件增强自己的自信心。 就是需要按下一个按钮才能提升自己的自信心。 过度依赖条件自信,会减弱自信。

再一个就要说如何学习,好多人都是一腔热血一身混劲不知道怎么用:

  学别的不知道,但是学java做好以下入个门是绝对可以的了。

如何学习?

关于实践:

    多练
    多调
    多想
    方向+勤奋+坚持
    程序员是敲出来的
    不要机械性的照抄,最好能够将老师的代码整理出一个思路,将老师的代码关闭之后去实现这个思路。这样慢慢的编程思想就有了。

关于阅读:

                                                                                                                                                                                                                                                   ----------------------这一页是摘自 Head First 设计模式一书。

与java无关的话说完了,接下来就说一些java基础,当然我不会从计算机组成和jvm(java虚拟机)说起,因为文章会显得太冗余也不适合初学者,而我也不会把java说的很细致,既然要学这门语言,那我就默认为你会看好多相关书籍,那些书籍各有所长,会细致介绍这门语言,我只是在这点出几个点和一些基础概念:

public class HelloWorld{

  public static void main (String [] args){

   String helloWorld = "hello world";

   System.out.print(helloWorld);

 }

}

既然要学java,hello world肯定写了,java运行和编译环境搭建了,如果没搭建去百度搭建的方法。

那我就从helloworld说起

  1.1 什么是标识符?

    标识符就是程序员在编写程序时,给类/变量/方法等起的名字,换句话说所有我们自己可以定义的名字统称为标识符(如:上面代码中的 HelloWorld,helloWorld )

  1.2 什么是关键字?

     关键字是系统有特殊含义的标识符, 这些有特殊含义的标识符,程序员在起名时,不能与关键字重名(会出问题的),换句话说关键字都是系统定义的。

     补充:关键字是不用刻意去背记的,常出现的稍加记忆,在以后的使用中自然会记住。

  1.3 标识符的命名规则

      1)标识符由字母,数字,下划线和$组成;

      2)第一个字符不能是数字

      3)不能与关键字重名

注意:

   1) 在Java 中是严格区分大小写的, Abc 和abc 是两个不同的标识符

   2) 标识符原则上没有长度限制

   3) 命名时最好做到见名知义

   4) 要符合命名规范

   5) 程序员在命名时,一般不使用$

2. 数据是什么?

  数据就是信息在计算机中的载体.

  信息: 老师手里有十个苹果

  数据: 10 、’苹果

  在计算机中的数据存储在内存和硬盘中不管是内存中,硬盘中,还是CPU 中处理的数据都是0 和1.

3.字面量

  Java 程序是用来处理数据的

  数据分为不可变的和可变的两类.

    不可变的又分为字面量和final 常量.

      字面量又称为直接量. 包括所有的整数,小数,字符,布尔,字符串和null

  final常量为不可改变的量,暂时不用理会。

4.变量

  变量就是在程序的运行过程中,它的值可以发生变化的量。

  根据定义变量的位置,可以把变量分为局部变量和成员变量

    成员变量: 在类中定义的变量

    局部变量: 在代码块中定义的变量

    变量的作用域:就是变量在哪个范围内有效

    成员变量:整个类

    局部变量:从定义的位置开始,直到包含它的大括弧结束 

5.数据类型的分类

  在Java 中把数据类型分为基本类型和引用类型两大类

  基本类型又包括:整数类型,小数类型,字符类型和布尔类型四部分 引用类型包括:类,接口,数组

  自动类型转换 byte -->short -->int -->long -->float -->double char -->int -->long -->float -->double

  强制类型转换:不能进行自动类型转换时,可以进行强转 (顾名思义强制就是将某一数据类型强行转换为另一数据类型)

6.运算符

  Java 程序是用来处理数据的 通过运算符实现对数据的处理 运算符有: 算术,关系,逻辑,赋值,条件,字符串连接....

7.基本的输入和输出

/*
从键盘上读取数据, 使用Scanner 类, 需要先把这个类导入
System,String 也是系统定义的类,这两个类在java.lang 包中
系统会自动导入java.lang 包中的类
*/
import java.util.Scanner; //Step1, 导入Scanner 类
class Demo06 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //Step2, 创建Scanner 对象
//System.in 代表系统的标准输入设备,即键盘; System.out 代表系统的标准输出设备,即显示器
System.out.println("请输入一个整数"); 
int i = sc.nextInt(); 

System.out.println("请输入一个小数");
double dd = sc.nextDouble(); 

System.out.println("请输入一个字符串");
String str = sc.next(); 

System.out.println("请输入一个布尔值");
boolean flag= sc.nextBoolean(); 

//从键盘上读取字符存储到char 类型变量中,
System.out.println("请输入一个字符");
String ccText= sc.next(); //先以字符串的形式读取
char cc = ccText.charAt(0); //再从字符串中把字符分离出来
//字符串中有一个方法charAt(index) 可以返回字符串中某个位置上的字符
System.out.println("cc==" + cc);
    }
}
基本的输出
1. 在屏幕上打印信息后换行
System.out.println("Hello World!");
2. 只打印不换行
System.out.print("123");
3.格式输出
System.out.printf("name:%s
" , "laoWang"); //%s 输出字符串
int age = 33;
System.out.printf("age:%d", age); //%d 输出整数
System.out.printf("
0123456789
");
System.out.printf("age:%6d
", age); //占6 位,默认右对齐
System.out.printf("%-6dage
", age); //左对齐
System.out.printf("小数:%8.2f", 12.345678); //%f 输出小数

8.控制流程和控制语句:

什么是流程控制?

  流程控制就是用来控制计算机指令的执行顺序.流程控制有三种基本结构:顺序结构,选择结构,循环结构重复的执行某段代码

为了实现控制流程于是就有了控制语句

/* if 语句
选择结构包括if 语句和switch 语句
  格式一:
         if( 条件){
            语句块
         }
        先判断条件, 如果条件成立就执行大括弧中的语句块;如果条件不成立就不执行

 格式二:
   if ( 条件){
    语句块1
  }else{
    语句块2
  }
  判断条件, 如果条件成立就执行语句块1; 如果条件不成立就执行语句块2

switch 语句
  switch( 表达式) {
    case 常量1 :
        语句块1;
        break;
    case 常量2 :
        语句块2;
        break;
    case 常量3:
        语句块3;
        break;
    case 常量4 :
        语句块4;
        break;
    default :
      语句块n
      break;
  }

1) 先计算switch 表达式的值, 找与该值匹配的case 常量值, 转到相应的Case 子句执行;
2) 在case 子句中遇到break 语句就跳出switch 结构;
3) 如果所有的case 常量值都不匹配,则执行default 子句
4) case 后面跟的必须是常量,并且常量值不能重复
5) case 子句没有先后顺序
6) 即使default 子句也可以放在其他case 子句前面, 总是在所有的case 常量值都不匹配的情况下才会执行
7) 如果case 子句没有break 语句,程序会继续向下执行下面的case 子句, 这是case 的穿透, 直到遇到break 语
句或者执行完switch 语句
8) switch 后面的表达式可以是int/String/枚举类型, byte/short/char 可以自动提升为int 类型,也可以.

switch 表达式为枚举类型
交通红绿灯, 如果是绿灯就通过,红灯就停,黄灯就等--------(switch 表达式为枚举类型)
*/
import java.util.Scanner;
class Demo07 {
public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
//使用枚举类型定义变量,并赋值
// TrafficLight light = null;
TrafficLight light =TrafficLight.Red;
// System.out.println( light );
System.out.println("请输入Red,Green,Yellow 代表信号灯");
String lightStr = sc.next();
//把字符串转换为枚举类型
light = TrafficLight.valueOf( lightStr );
switch ( light ){
case Red:
System.out.println("停");
break;
case Green:
System.out.println("行");
break;
case Yellow:
System.out.println("等");
break;
}
}
}
/*
1)enum 是一个关键字,用来定义枚举类型. 就类似于class 用来定义类
2) enum 后面跟的是枚举类型名, TrafficLight 是一个数据类型
3) enum 中的内容也是用一对大括弧括起来
4) TrafficLight 这个数据类型定义的变量只能取值Red, Green, Yellow;
*/
enum TrafficLight{
Red, Green, Yellow;
}

while 循环
while( 条件){
语句块,又称为循环体
}

先判断条件是否成立, 如果条件成立就执行语句块(循环体), 执行完循环体之后再判断条件是否成立, 如果条
件成立继续执行循环体,如果条件不成立,就退出循环

break
应用场景:
1) 在switch 结构中, 可以跳出switch 结构
2) 在循环中, 可以中断循环

do{}while()
do {
循环体
}while( 循环条件);
先执行循环体,再判断循环条件是否成立;如果条件成立继续执行循环体, 否则退出循环

任何循环都可以使用while 循环
do...while 循环的使用场景
一般情况下,如果循环条件需要用户输入或者需要通过循环体计算时,可以使用do..while 循环

for 循环
for( 初始化表达式; 条件表达式; 循环体后表达式){
循环体
}
1)先执行一次初始化表达式;
2)判断条件表达式是否成立,如果成立就执行循环体, 如果不成立就退出循环
3) 执行循环体
4) 执行循环体后表达式
5)循环执行第2)~4),
注意:
1)一般情况下,在初始化表达式中定义一个在for 循环中使用的局部变量
2)在循环体后表达式中修改循环控制变量的值

所有的while 循环都可以使用for 循环,同样,所有的for 循环都可以使用while 循环
for 循环的使用场景
一般情况下,循环次数确定时,使用for 循环
循环次数不确定时,使用while 循环

9.什么是方法?

方法就是为了完成某个功能而编写的一段代码.
println() 方法可以在屏幕上打印信息
next() 方法可以从键盘上读取一个字符串
random() 方法返回一个[0,1)之间的随机小数
如果以后想使用这个功能时就直接调用这个方法即可.
方法的优点:
1)使代码理念简洁
2)实现代码复用
3)方便维护

4.2 方法的定义
[修饰符] 返回值类型方法名( 方法参数列表) {
方法体
}
1)方法的修饰符有: public/protected/private, static , abstract, final ,synchronized 等
2)返回值类型是指调用方法时返回这个值的数据类型. 如调用Math.random()方法返回一个[0,1)之间的小数,那
么random()方法的返回值类型应该是double 类型; 如println()方法是在屏幕上打印信息,不需要返回值,这个方法的返
回值类型用void 来表示; 如nextInt()方法从键盘上读取一个整数并返回,这个方法的返回值类型就是int 类型
3)方法名就是程序员起的名字,它一般是一个动词, 第一个单词小写,其他每个单词首字母大写
4)方法名后面小括弧中的内容是方法参数, 方法参数的作用是用来接收一个数据. 如println()方法在屏幕上打印信息,在调用println()方法时,需要给这个方法指定要打印的内容, println()方法就是通过参数来接收数据的; 如果方法不需要参数,如random()方法没有参数,小括弧不能省
5)方法体用一块大括弧括起来

4.3 方法的调用
1) 在程序中,定义了方法, 该方法在没有调用之前,不会执行
2) 通过方法名来调用方法
3) 如果在定义方法时,给方法指定了参数, 在调用方法时,必须传递对应的值. 参数个数一样,参数类型要兼容
4) 如果方法没有返回值,即方法的返回值类型为void, 在调用方法时,这条调用语句只能单独存在
5) 如果方法有返回值,在调用方法时, 可以把方法的返回值保存到一个变量中;可以把方法的返回值打印到屏幕上;可以把方法的返回值作为其余表达式的一部分

4.4 形参与实参
1) 在定义方法时,指定的参数称为形式参数,简称为形参在调用方法时,给方法传递的参数称为实际参数,简称为实参
2) 在定义方法时,形参不存在,相当于一个占位符, 表示可以接收某个类型的数据
3) 在调用方法时, 在栈区中给方法分配存储空间, 同时给方法的形参分配存储空间,这时形参才存在
4) 在调用方法时,把实参的值传递给形参
5) 形参与实参是相互独立的,在方法中对形参进行了重新赋值,不影响实参的值
6) 当方法执行完毕,在栈区中给方法分配的存储空间就被释放, 方法的形参及局部变量也被释放

/*方法的重载
* 在同一个类中,方法名相同,方法参数列表不同(包括参数个数,或者参数类型不同)
*
*为什么重载?
* 相同的功能,使用同一个方法名, 如在屏幕上打印任意类型的数据都可以使用println()方法
*/

10.面向对象与面向过程
  面向过程强调的是解决问题的步骤, 各个步骤之间是紧密相关的;
  面向对象是以事物为中心,通过给事物发送消息来完成工作.
2 类与对象的概念
  现实世界中客观存在的实体称为对象.
  万事万物皆对象
  类是所有对象相同部分的抽象
  类是对一组对象相同特征和相同行为的抽象描述.
  对象是具体的,类是抽象的
  类就可以看作是图纸(模板), 对象是根据图纸设计而成的实物
3.如何定义类
  在现实世界中,认识自然的规律是先有对象,再有类.
  在Java 中,先有类, 通过类定义对象
格式:
[修饰符] class 类名{
  //静态特征, 用变量来保存
  //行为, 用方法来表示
}
1)类的修饰符有:public , abstract, final
2)类名在命名时, 每个单词的首字母大写
4 定义对象
类名 对象名= new 类名() ;
/*
*1)类是一种引用数据类型,就可以定义变量
* 2)给类定义的变量进行初始化时, new 类名();
* 3)类定义的变量,准确的说是对象的引用, 一般就简单的称它为对象
* 4)类定义了对象之后,对象就有了类中定义的成员变量和成员方法
* 对象通过成员运算符(.)来访问成员变量和成员方法
* 5)一个类可以定义多个对象
* 6)同一个类的对象可以相互赋值
*/

空指针异常
  当一个对象没有初始化时,或者说这个对象的值为null 时, 访问这个对象的成员变量或者成员方法就会产生空指针异常.

 

  

原文地址:https://www.cnblogs.com/f-bob/p/9626351.html