吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2533|回复: 23
收起左侧

[Java 转载] 小白学Java记录过程

[复制链接]
sunburst 发表于 2021-10-9 23:21
眼看已经大三,马上面临工作问题,逐渐感到焦虑!特开此贴记录学习过程。Ps:在B站找了个小白零基础学习视频跟随学习。
Day1.学习了Java简介、markdown语法、环境变量配置、常用dos命令。

Java简介

java特性和优势

高可用、高性能、高并发

  1. 简单性
  2. 面向对象
  3. 可移植性
  4. 高性能
  5. 分布式
  6. 动态性(反射机制)
  7. 多线程
  8. 安全性
  9. 健壮性

Java三大版本

  1. JavaSE(标准版)
  2. JavaEE(企业版)
  3. JavaME(精简版,嵌入式开发,安卓)

JDK、JRE、JVM

JDK:    Java Development Kit(Java开发者工具包)

JRE:    Java Runtime Environment(Java运行时环境,编译器)

JVM:    Java Virtual Machine(Java虚拟机)


java简介.png

Dos常用命令

打开CMD:Win+R

常用命令:

#盘符切换直接输入目标盘符:进入F盘
F:
#查看当前目录下所有文件
dir
#(跨盘)切换目录到E盘下ssm文件夹 cd(change directory)
cd /d e:\ssm
#返回上级
cd ..
#进入同级目录MQ文件夹
cd MQ
#清空屏幕内容 cls (clear screen)
cls
#查看电脑IP
ipconfig
#打开计算器
calc
#打开画图
mspaint
#打开记事本
notepad
#ping命令
ping www.baidu.com
#创建目录test
md test
#文件夹内创建文本a
cd>a.txt
#删除文本a
del a.txt
#删除目录test下所有文件
del test
#删除目录test
rd test

Java运行环境安装

安装JDK

  1. 下载JDK
  2. 安装JDK并记下安装路径(安装路径最好没有中文)

配置环境变量(JAVA_HOME,path,classpath)

  1. 我的电脑(右键)属性-高级系统设置-环境变量(在系统变量去添加设置内容)

  2. 新建:JAVA_HOME = 安装路径

  3. 修改:path 在原有的值后面添加bin 和 jre\bin的目录
    环境变量配置.png

  4. 新建:

    classpath=.;%Java_Home%\bin;%Java_Home%\lib\dt.jar;%Java_Home%\lib\tools.jar

  5. 验证JDK的配置是否完成。

    启动DOS窗口,输入java -version 命令,输出JAVA的版本信息则配置正确

环境变量配置2.png

HelloWorld

  1. 编写源代码

    创建HelloWorld.txt文件,编辑以下内容并保存。

public class HelloWord{
    public static void main(String[] args){
        System.out.println(“Hello,World”);
    }
}

保存后更改文件格式为.java

  1. 编译源程序

    打开cmd窗口运行指令

Javac HelloWord.java

​     编译成功后,产生一个HelloWord.class文件(二进制文件)

  1. 运行二进制文件

    Java HelloWorld

  2. 输出运行结果

    Hello,World

注意:

  1. 类名首字母要大写。
  2. 标点符号必须是英文。
  3. 文件名和类名保持一致。

免费评分

参与人数 6吾爱币 +8 热心值 +3 收起 理由
kkyyzz + 1 我很赞同!
HDR1321 + 1 用心讨论,共获提升!
izhongshi + 1 + 1 我很赞同!
woyucheng + 1 + 1 谢谢@Thanks!
4nfu + 1 我很赞同!
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| sunburst 发表于 2021-10-10 20:50
兄弟们,遇到个问题。
   //为什么f和d输出结果false
   float f = 0.1f;
   double d = 1.0/10;
   System.out.println(f==d);
   //为什么f1和f2输出结果为true
   float f1 = 2121211212121f;
   float f2 = f1+1;
   System.out.println(f1==f2);
 楼主| sunburst 发表于 2021-10-10 23:25
本帖最后由 sunburst 于 2021-10-10 23:42 编辑

Day02:
学习了关键字与标识符一部分、类、数据类型、变量、常量、类型转换、运算符

Java基础

关键字与标识符

  1. 关键字:
abstract assert boolean break byte
case catch char class const
continue default do double else
enum extends final finally float
for goto if implement import
instance of int interface long native
new package private protected public
return strictfp short static super
switch synchronized this throw throws
transient try void volatile while
  1. 标识符:

    ​        java标识符就是用于给程序中变量,类,方法命名的符号。

    • java标识符必须以字母,下划线,美元符号开头
    • 标识符不能是java 关键字,但是可以包含java关键字
    • 标识符不能包含空格
    • 变量首字母小写,类名首字母大写

​        类由class关键字修饰。

  • 一般情况一个文件对应一个JAVA类,且文件名要和类名一致区分大小写

  • 一个文件可以匹配多个JAVA类,且多个JAVA类只能有一个public 类,且public类的类名必须与文件名一致

  • 如果一个文件中存在多个JAVA类,则只能有一个public类,public类的名称必须和文件名一样

  • 一个文件存在多个JAVA类,编译后每个JAVA类生成一个二进制文件

数据类型

​        Java数据类型

  1. 基本类型:

    基本数据类型 byte short int long float double char boolean
    包装类 Byte Short Integer Long Float Double Char Boolean

    取值范围

  2. 引用类型

    String,  数组,集合,自定义类

变量

​        变量就是可以变换的量,在程序中通过变量保存数据,数据存在类型。

定义变量:

  1. 数据类型  变量名 = 变量值;

    //数据类型  变量名 = 变量值;
    int        num = 0;
    float score = 59.5f;//float类型需要在变量值后加f
    long num1 = 10L;//long类型需要在变量值后加L
    boolean flag = true;//boolean类型只能赋值true或false
    char c = 'A';//char只能声明一个字符
    String s = "Hello,World!";//String类型声明的是字符串
  2. 数据类型 变量名1,变量名2,变量名3;

    //数据类型  变量名1,变量名2,变量名3;
    int num1=2,num2=4,num3=6;
    同时声明多个变量并赋值;
  3. 数据类型 变量名;  变量名 = 变量值;

    //数据类型 变量名;
    //变量名 = 变量值;
    int a;
    a = 0;

    注意:

    • 每个变量都有类型,类型可以是基本类型,也可以是引用类型
    • 变量名必须是合法标识符,不能是关键字
    • 变量声明是完整的语句,每个声明都必须以分号结尾

    变量命名规范:

    1. 所有变量、方法、类名必须见名知意
    2. 类成员变量、方法名、局部变量:首字母小写和驼峰原则
    3. 常量:大写字母和下划线:MAX_VALUE
    4. 类名:首字母大写和驼峰原则StudentInfo

    疑问?

    为什么f和d输出结果false,

    //为什么f和d输出结果false
    float f = 0.1f;
    double d = 1.0/10;
    System.out.println(f==d);
    //为什么f1和f2输出结果为true
    float f1 = 2121211212121f;
    float f2 = f1+1;
    System.out.println(f1==f2);

局部变量和全局变量

​        类变量(类的属性),实例变量,全局变量 都指的是同一类型变量

​        全局变量和局部变量( 定义在某一个代码块({})中的变量称为局部变量)

public class Student{
    //类变量
    static int age = 13;
    /*实例变量:从属于对象,如果不自行初始化,会自动赋予默认值。
    默认值:除了基本数据类型(boolean默认值为false),其余都是null
    */
    String sex;
    public static void main(String[] args){
        //局部变量
        String name = "法外狂徒张三";
    }
}
  • 变量的作用域:变量可以使用的范围

  • 默认值的问题:全局变量有默认值,局部变量没有默认值,局部变量必须先赋值再使用

  • 使用原则:当全局变量和局部变量同名以后,使用原则是就近原则(局部变量优先)。如果想使用全局变量,必须使用this指定变量的范围 this.name

常量

初始化(initialize)后不能再改变的值。它的值被设定后,程序运行中不允许修改。

声明方式:

/*final 常量名 = 值
常量名一般使用大写字母
*/
final double PI = 3.14;

类型转换

​        由于java是强类型语言,所以进行有些运算需要进行类型转换。

​        由低到高:byte,short,char->int->long->float->double  (小数优先级大于整数,在一个表达式中只要有一个表达式是double则整个表达式的结果就是double)

​        运算中,不同类型数据先转换为同一类型,然后再进行运算!

强制转换(高到低):

//强制转换,应避免数据溢出                (类型)变量名
int i = 122;
byte b = (byte)i;
System.out.println(b);
//输出结果        122

自动转换(低到高):

//自动转换由低到高,不需要加括号强制转换
int i = 122;
double d = i;
System.out.println(d);
//输出结果        122.0
char c = 'a';
int i1 = c+1;
System.out.println(i1);
System.out.println((char)i1);
//输出结果        98        b

注意:

  1. 不能对布尔值进行转换

  2. 不能把对象类型转换为不相干的类型

  3. 高类型转换为低类型需要强制转换

  4. 转换时可能出现内存溢出或精度问题

    //精度丢失
    System.out.println((int)23.7);
    System.out.println((int)-45.23f);
    //输出结果        23,-45
    
    //内存溢出
    int i = 128;
    byte b = (byte)i;
    System.out.println(b);
    //输出结果        -128        

运算符

算术运算符 +、-、*、/、%、++、--
赋值运算符 =、+=、-+、*=、/=
关系运算符 >、<、==、!=、>=、<=
逻辑运算符 &&、||、!
位运算符 &、|、^、~、>>、<<、>>>(了解)
条件运算符 ? :
 楼主| sunburst 发表于 2021-10-24 14:34

第不知道多少天。。坚持写笔记好难

包机制

为了更好的组织类,java提供了包机制,用于区别类名的命名空间。包一般利用公司域名倒置作为包名。(包声明必须在最上面)为了使用某一个包的成员,我们需要在Java程序中明确导入该包。使用import语句可完成此功能

import 类路径;

Java流程控制

用户交互Scanner

java.util.Scanner是Java5的新特征。可以通过Scanner类来获取用户的输入

通过scanner类的next()与nextLine()方法来获取输入的字符串,在读取前一般使用hasNext()与hasNextLine()判断是否还有输入的数据。资源使用后要记得关闭资源!

//使用next()方式接收
//创建Scanner对象
Scanner s = new Scanner(System.in)
//接收输入
if(s.hasNext()){
//使用next方式接收
    String s1 = s.next();
    System.out.println("输入的字符为:"+s1);
}
//关闭资源
s.close();
//使用nextLine()接收
Scanner s = new Scanner(System.in);
if(s.hasNextLine()){
    String s1 = s.nextLine();
    System.out.println("输入的字符为:"+s1);
}
s.close();

next() 与 nextLine() 区别

next():

  • 1、一定要读取到有效字符后才可以结束输入。
  • 2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
  • 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
  • next() 不能得到带有空格的字符串。

nextLine():

  • 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
  • 2、可以获得空白。

顺序结构

Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一步一步执行

选择结构

if语句

if(布尔表达式){
    //如果布尔表达式为true将执行的语句
}else{
    //如果布尔表达式为false将执行的语句
}

// if多选择结构
if(表达式1){
    //表达式1的值为true执行代码
}else if(表达式2){
    //表达式1的值为true执行代码
}else if(表达式3){
    //表达式1的值为true执行代码
}else{
    //以上表达式结果都为false执行代码
}

switch多选择结构

​ 从Java 7开始,switch支持String类型了,同时case标签必须为字符串常量或字面量

switch(expression){    case value:        //执行语句;        break;    case value:        //执行语句;        break;    //你可以有任意数量的case语句    //不写break会发生case穿透    default:        //执行语句;       }

循环结构

while循环

while是最基本的循环,只要布尔表达式为true,循环就会一直执行下去。

我们大多数情况下是会让循环停下来的,我们需要一个让表达式失效的方式来结束循环。

循环条件一直为true就会造成无限循环【死循环】,我们正常编程应该尽量避免死循环

//while循环结构while(布尔表达式){    //循环内容}//应用场合:当循环的次数不固定的时候需要使用while循环

do...while循环

对于while语句而言,如果不满足条件,就不会进入循环,但有时候我们需要不满足条件也要至少执行一次。do...while循环和while循环相似,不同的是do...while至少会执行一次

//do...while循环结构do{    //循环内容}while(布尔表达式);

while和do...while的区别:

  • while先判断后执行,do...while是先执行后判断!
  • do...while保证循环体至少会被执行一次!

for循环

  • for循环是支持迭代的一种通用结构,是最有效最灵活的循环结构

  • for循环执行的次数是在执行前就确定的。

  • 适用场合是循环的次数比较固定

    //for循环结构for(初始化;布尔表达式;迭代){    //循环内容}/*for执行过程: 1.初始化2.判断条件(true) 3.执行循环体 4.迭代5.判断条件(true) 6.执行循环体7.迭代8.判断条件(false)9.结束循环死循环:for(;;){    //循环体}*/

    java5中引入了主要用于数组的增强for循环

    //foreach(增强for循环)//foreach结构for(声明语句:遍历对象){    //循环语句}//遍历数组元素int[] arr = {1,2,3,4,5};for(int i:arr){    //遍历s    System.out.println(i);}

    练习:打印99乘法表

    for (int i = 1; i <= 9; i++) {    for (int j=1;j<=i;j++){        System.out.print(i+"*"+j+"="+(i*j)+"\t");    } System.out.println();}

break&continue关键字的使用

  • break在任何循环语句的主体部分均可用break控制循环的流程,break用于强行退出循环,不执行循环中剩余的语句(break 在switch中使用过,作用是结束switch的结构.)

  • continue语句用在循环语句体中,用于终止某次循环过程(跳过本次循环,进行下次是否循环判定)

在循环的过程中,因为某一些额外的因素,导致需要改变循环的执行过程

循环执行过程的改变 :

​ break:终止循环

​ continue:结束本次循环,进入下一次循环

练习

  1. 打印三角形
/*
     *
    ***
   *****
  *******
 *********
*/
for (int i = 1; i <= 5; i++) {
    for (int j = 5; j >=i; j--) {
        System.out.print(" ");
    }
    for (int j = 1; j <=i; j++) {
        System.out.print("*");
    }
    for (int j = 1; j <i; j++) {
        System.out.print("*");
    }
    System.out.println();
}
nick704 发表于 2021-10-9 23:44
加油!!!!
atlim 发表于 2021-10-9 23:49
加油鸭...
PpaPingggg 发表于 2021-10-9 23:57
加油````
零_ 发表于 2021-10-10 08:30
学了后有啥好的课程推荐吗
侃遍天下无二人 发表于 2021-10-10 10:03
你学的是Java8?到Java11之后就没有单独的JRE了
凌天羽 发表于 2021-10-10 11:29
你看的是B站哪个JAVA教程,发出来一起学下呗!
cfanpc 发表于 2021-10-10 19:30
用记事本写呀,咋不用Ecplise
 楼主| sunburst 发表于 2021-10-10 20:30
凌天羽 发表于 2021-10-10 11:29
你看的是B站哪个JAVA教程,发出来一起学下呗!

狂神说Java零基础的
 楼主| sunburst 发表于 2021-10-10 20:31
cfanpc 发表于 2021-10-10 19:30
用记事本写呀,咋不用Ecplise

用的Idea,只是刚装环境时候用记事本写了一个hello,world
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-26 10:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表