GODV 发表于 2019-10-22 19:15

【学习笔记】 小白学java section1!!!坚持就是胜利

本帖最后由 GODV 于 2019-10-25 23:47 编辑

【首先声明】:新人首次发学习笔记,如有违规或者不合理之处,麻烦各位提醒或者请版主删除
         大学三年匆匆而过,虽然也是这专业的,但是纯混了三年,大学生活懂得都懂{:1_905:}!!!一直以来都从论坛上汲取别人分享的成果,但很少分享(确实也没啥好的知识分享给大家{:1_896:}),再下定决心学java时,就想着分享一些学习笔记,给一些有需要的同学,一起努力,希望大家在下面多交流学习心得,共同进步!求各位大神轻喷,纯菜鸟级别,好了话不多说,直接进入主题!!
【类型】:java学习笔记
【等级】:小白
【学习方式】:视频学习
【视频】:高淇老师的百战程序员(如有广告嫌疑请提醒我删除)
第一节   初识java
1.Java架构:JavaSE(标准版)、JavaEE(企业版)、JavaME(微型版)
2.Java运行机制:文本编辑器——Java源码(*.java)——编译器(javac)——字节码文件(*.class)——Java虚拟机——系统平台
3.JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html
4.JDK(Java Development Kit)配置环境变量path方法:https://www.sxt.cn/Java_jQuery_in_action/environment_variable_configuration.html
5.开发工具:Eclipse下载地址:http://www.eclipse.org/downloads/packages/
编写第一个程序:
代码:public class Welcome {
      public static void main(String[] args) {
                System.out.println("大家好,hello world!");
      }
}
好了今天的学习到此结束!!!开心
10.22号继续更新
第二节    初识数据类型与运算符
一.Java注释类型:
单行注释:形式:“//注释内容”
多行注释:形式:“/*注释内容*/”
文档注释:形式:“/**文档注释内容*/”
说明注释用法的代码
/**
* 这是文档注释,一般用于后期项目·API的说明
* @author GODV
*
*/
public class Welcome {
      public static void main(String[] args) {//这是单行注释
                System.out.println("大家好,hello world!");
                /*
               这里均是多行注释,注释内容的代码不执行
                System.out.println("11111");
                System.out.println("11111");
                System.out.println("11111");
                */
      }
}
二.标识符
Java标识符命名规则:
必须以字母、下划线_、或者美元符号$开头
标识符其后部分可以是字母、下划线_、$、或者数字任意组合
大小写不敏感对长度无要求
标识符不能是Java关键字


标识符的规范:
表示类名的标识符每个单词首字母需要大写
表示变量和方法的标识符单词首字母小写其后的单词字母需大写

标识符命名规范及规则说明的代码:
/**
* 标识符命名规则及其规范说明
* @author GODV
*
*/
public class Identifier_Test {//这是用class定义的一个类Indentifier_Test,首单词首字母大写第二个单词首字母均是大写
      public static void mian(String[] args) {//这是系统给的mian方法其单词的首字母小写
                //以字母、下划线_、或者美元符号$开头
                String name = "GODV";
                int _age1 = 18;
                int $income = 10000000;
                /*这是多行注释
               //非法标识符
                int 2a
                int \age1
                .....
               */
      }
      class TestIndentifier{//这是定义的一个类,单词的首字母大写
                private void studyHard() {//定义的studyHard方法首单词首字母小写其后单词首字母均大写
                }
      }
}
三.变量与常量
分类:局部变量、成员变量、静态变量

类型声明位置从属于生命周期
局部变量方法或语句块内部方法/语句块从声明位置开始,直到方法或语句块执行完毕,局部变量消失
成员变量(实例变量)类内部,方法外部对象对象创建,成员变量也跟着创建。对象消失,成员变量也跟着消失;
静态变量(类变量)类内部,static修饰类类被加载,静态变量就有效;类被卸载,静态变量消失。
常量:通常指一个固定的值,一般用final修饰!!所有单词的字母均大写

变量与常量代码实例
/**
* 变量说明
* @author GODV
*
*/
public class Variable_Test {//类
      static int passWord = 20000;      //静态变量从属于类
      public static void main(String[] args) {//方法
                int age = 18;                        //局部变量      在main方法体内
                String name = "GODV";      //局部变量         
                final int MAX_VALUE = 100;//常量,所有字母大写
                //MAX_VALUE = 200;                //错误,MAX_VALUE值无法修改
      }
      int age = 20;                              //成员变量
      String name = "GODV";                //成员变量定义在方法体外但在类内
      
      static int length = 20000;      //静态变量从属于类
}
3.Java数据类型
基本数据类型:数值型(byte、short、int、long、float、double)、字符型(char)、布尔型(boolean)
引用数据类型:后面学习

类型占用存储空间表数范围
byte1字节-2^7 ~   2^7-1(-128~127)
short2字节-2^15 ~   2^15-1(-32768~32767)
int4字节-2^31 ~   2^31-1 (-2147483648~2147483647)约21亿
long8字节-2^63 ~   2^63-1
float:4字节、double:8字节
char:2字节      用“\u0000”到“\uFFFF”之间的十六进制值表示
Boolean:占1位   两个常量值true和false
10.23号继续更新
四.运算符
1.算数运算符(+、-、*、/、%)
其中%是取余符,其余数值正负号按照取余%运算符左边值正负号来决定。
2.赋值运算符(=、+=、-=、*=、/=、%=)
3.关系运算符(>、<、>=、<=、==、!=)
4.逻辑运算符(&、|、!、&&、||、^)
其中^为逻辑异或运算符,两边操作数相同则为false,操作数不同则为true
其中&&与||从左到右计算,如果只通过运算符左边的操作数就能够确定该逻辑表达式的值,则不会继续计算运算符右边的操作数,提高效率。
5.位运算符(~、&、|、!、^、>>、<<)
<<左移运算符,左移1位相当于乘2
>>右移运算符,右移1位相当于除2取商
6.字符串连接符(+)
7.条件运算符( x?y:z)
x为判断条件,若为true则输出y;若为false则输出z
五.获取键盘输入
scanner函数可以获得键盘的输入
Scanner键盘输入代码
import java.util.Scanner;
/**
* 键盘输入scanner
* @author GODV
*
*/
public class Scanner_Test {
      public static void main(String[] args) {
                Scanner keyImport = new Scanner(System.in);
                System.out.println("请输入名字");
                String name = keyImport.nextLine();      
                System.out.println("请输入年龄");
                int age = keyImport.nextInt();
                System.out.println("你的名字叫" + name + "\n你的年龄是:" + age);
      }
}
六.作业编码题
1.输入圆形半径,求圆形的周长和圆形的面积,并将结果输出。
import java.util.Scanner;
public class ZuoYe {
      public static void main(String[] args) {
                //1.输入圆形半径,求圆形的周长和圆形的面积,并将结果输出。
                Scanner scanner = new Scanner(System.in);
                System.out.println("请输入圆形半径r:");
                float r = scanner.nextFloat();                              //圆形半径r
                float circle = (float)(2 * 3.14 * r);                //圆形周长circle
                double area = 3.14 * r * r;                                        //圆形的面积area
                System.out.println("该圆的半径为:R = " + r);
                System.out.println("该圆的周长为:C = " + "2" + "*" + "3.14" + "*" + r + "=" + circle);
                System.out.println("该圆的面积为:S = " + "3.14" + "*" + r + "*" + r + "=" + area );
      }
}
2.银行利率表如下表所示,请计算存款10000元,活期1年、活期2年,定期1年,定期2年后的本息合计。
https://attach.52pojie.cn//forum/201910/23/225757xqf2oouzqqiiyqof.png?l
结果如下图所示(结果四舍五入,不保留小数位。使用Math.round(double d)实现)。
https://attach.52pojie.cn//forum/201910/23/230756g021a8zqm2h3z2q0.png?l
public class ZuoYe {
      public static void main(String[] args) {
                int deposit = 10000;                                                                                                      //本金10000
                int currentDeposit1 = (int)(Math.round((deposit) * (1 + 0.0035)));                //活期一年本金
                //System.out.println(currentDeposit1);
                int timeDeposit1 = (int)(Math.round((deposit) * (1 + 0.015)));                        //定期一年本金
                int currentDeposit2 = (int)(Math.round((deposit) * (1 + 0.0035) * 2));      //活期2年本金
                int timeDeposit2 = (int)(Math.round((deposit) * (1 + 0.021) * 2));                //定期2年本金
                System.out.println("本金:" + deposit);
                System.out.println("活期1年本金总计:" + currentDeposit1);
                System.out.println("定期1年本金总计:" + timeDeposit1);
                System.out.println("活期2年本金总计:" + currentDeposit2);
                System.out.println("定期2年本金总计:" + timeDeposit2);
      }
}

3.某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。结果如图所示。
https://attach.52pojie.cn//forum/201910/23/231815mqto1nr5z4xnq5kl.png?l
import java.util.Scanner;
public class ZuoYe {
      public static void main(String[] args) {
                System.out.println("请输入传递的四位数据:");
                int num = scanner.nextInt();                        //获得四位数字
                int units = num % 10;                                        //求出个位数字
                int tens = (num % 100) / 10;                        //求出十位上的数字
                int hundreds = (num % 1000) / 100;                //求出百位数字
                int thousands = num / 1000;                              //求出千位数字
                //每位数字加上5,和除以10的余数代替
                int units1 = (units + 5) % 10;
                int tens1 = (tens + 5) % 10;
                int hundreds1 = (hundreds + 5) % 10;
                int thousands1 = (thousands + 5) % 10;
                //1,4换位      2,3换位
               int temp;                                                                //临时存放数据
               temp = units1;
               units1 = thousands1;
               thousands1 = temp;
               temp = tens1;
               tens1 = hundreds1;
               hundreds1 = temp;
               int num1 = units1 + tens1 * 10 + hundreds1 * 100 + thousands1 * 1000; //加密后的数字
                System.out.println("加密后的数字是:" + num1);
      }
}
第三节 初识控制语句
一.选择语句
if(布尔表达式){语句块;}


if(布尔表达式){语句块;}
else{语句块}


if(布尔表达式){语句块;}
else if(布尔表达式){语句块;}
……
else{语句块;}


switch(表达式){
case 值1:
语句块1;
break;
case 值2;
语句块2;
break;
……
default:
语句块;
}
二.循环语句块
while(布尔表达式){循环体;}


do {循环体;}   while(布尔表达式)


for(初始表达式;布尔表达式;迭代因子){循环体;}
练习1使用嵌套循环实现九九乘法表
public class MultiTable_Test {
      public static void main(String[] args) {
                for(int i = 1;i <= 9;i ++) {
                        for(int j = 1;j <= i;j ++) {
                              System.out.print(j + "*" + i + "=" + i * j + "\t");
                        }
                        System.out.println();
                }
      }
}
作业编码题
1. 从键盘输入某个十进制整数数,转换成对应的二进制整数并输出。
import java.util.Scanner;
public class DecimalConvertBinal_Test {
      public static void main(String[] args) {
                System.out.println("请输入所要转换的十进制整数:");
                Scanner sc = new Scanner(System.in);
                int number = sc.nextInt();
                System.out.println(decimalToBinal(number));
      }
      static int remainNum = 0;                              
      static int binalNum = 0;
      static int i = 1;
      static int temp = 0;
      static int decimalToBinal(int num) {      //num为要输入的十进制数      
                if(num == 0) {                                        //递归头
                        System.out.print("其二进制为:" );      
                        temp = binalNum;                        //临时存储二进制数据
                        //以下用于初始化数据
                        remainNum = 0;                              
                        binalNum =0;
                        i =1;
                }else {                                                      //递归尾
                        remainNum = num % 2;                //remainNum是整除2后的余数
                        binalNum += remainNum * i;      //bianlNum是二进制数
                        i *= 10;                                        //i是每次执行一次递归就i*10
                        decimalToBinal(num / 2);               
                }
                return temp;                              //返回二进制数
      }
}
2. 编程求:∑1+∑2+……+∑100。
public class Sum_Test {
      public static void main(String[] args) {
                System.out.println(sumNum(100));
      }
      
      static int sumNum(int num) {                //num形参为所要求和的最大值
                int sum = 0;
                for(int i = 1;i <= num;i ++) {
                        for(int j = 1;j <= i;j ++) {
                              sum += j;
                        }
                }
                return sum;
      }
}
3. 编写递归算法程序:一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求数列的第40位数是多少。
public class RecurCacul {
      public static void main(String[] args) {
                System.out.println(numPos(40));
      }
      static int numPos(int num) {
                int sum = 0;
                if(num == 1 || num == 2) {
                        return 1;
                }else {
                        sum = numPos(num - 1) + numPos(num - 2);
                }
                return sum;
      }
}
10.25号继续更新
第四节   初识类与对象
一.对象与类的概念
类:用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的共同的属性、方法。
对象:可以看成该类的一个具体实例;


类的定义方式:类一般包含三种常见成员:属性、方法、构造器;类可以为空;


属性:定义该类或该类对象包含的数据或者说静态特征,作用于整个类;
方法:用于定义该类或该类实例的行为特征和功能实现。方法是类和对象行为特征的抽象。
构造器:也叫构造方法(constructor),用于对象的初始化。构造器是一个创建对象时被自动调用的特殊方法,目的是对象的初始化。构造器的名称应与类的名称一致。Java通过new关键字来调用构造器,从而返回该类的实例,是一种特殊的方法。构造方法也可重载!!

代码说明测试
public class Class_Test {                              //java一份源文件里,只能有一个public修饰的类
      public static void main(String[] args) {                //程序的入口
                Student sd = new Student();      
                sd.name = "ss";
                sd.age = 18;
                StudyWeb sw = new StudyWeb();
                sw.webPos = "www.52pojie.cn";
                sd.sw = sw;
                sd.study();
                Student sd1 = new Student(100,"ss123456");
      }
}
class Student{
      //属性I(成员变量)从属于对象
      String name;
      int age;
      StudyWeb sw;
      //静态属性,从属于类
      static int id;
      static String passWord;
      
      //方法,从属于对象
      public void study() {
                System.out.println("我正在学习,网站学习地址是:" + sw.webPos);
      }
      //静态方法,从属于类
      public static void play() {
                System.out.println("我正在放松");
      }
      
      //构造器,用于对象的初始化
      public Student() {
                System.out.println("这是构造方法");
      }
      public Student(int id,String passWord) {
                this.id = id;                                        //this关键字在构造方法中,this总是指向正要初始化的对象
                this.passWord = passWord;
                System.out.println("这是构造方法的重载");
      }
}
class StudyWeb{      
      //属性
      String webPos;
      //没有定义构造器,则编译器会自动定义一个无参的构造函数。如果已定义则编译器不会自动添加!
      static {                //静态初始化块,用于类的初始化,!在静态初始化块中不能直接访问非static成员。
                System.out.println("这是静态初始化块");
                //webPos = "www.123.com"; //无法调用非静态成员
      }
}
运行内存分析图
https://attach.52pojie.cn//forum/201910/25/221854ea4aqkv81makfg3d.png?l
二.编程代码题
1. 编写 Java 程序用于显示人的姓名和年龄。定义一个人类Person。 该类中应该有两个私有属性: 姓名 (name) 和年龄 (age) 。定义构造方法用来初始化数据成员。再定义显示(display()) 方法将姓名和年龄打印出来。在 main 方法中创建人类的实例然后将信息显示。
public class Person {
      private String name;
      private int age;
      
      public void display() {
                System.out.println("姓名是:" + name + ";" + "年龄是:" + age);
      }
      
      public Person(String name,int age) {
                this.name = name;
                this.age = age;
      }
      public static void main(String[] args) {
                Person p = new Person("GODV",18);
                p.display();
      }
}
 2. 定义一个圆类——Circle,在类的内部提供一个属性:半径(r),同时 提供 两个 方 法 : 计算 面积 ( getArea() ) 和 计算 周长(getPerimeter()) 。 通过两个方法计算圆的周长和面积并且对计算结果进行输出。最后定义一个测试类对 Circle 类进行使用。
class Circle {
      //属性
      float r;
      //方法
      public float getArea() {                //求面积方法
                return (float)(Math.PI * r * r);
      }
      public float getPerimeter() {
                return (float)(2 * Math.PI * r);
      }
      public void display() {
                System.out.println("圆的面积是:" + getArea() + ";" + "圆的周长是:" + getPerimeter());
      }
      //构造方法
      public Circle(float r) {
                this.r = r;
      }
}
public class TestCircle{//测试类
      public static void main(String[] args) {
                Circle c = new Circle(5.0f);
                c.display();
      }
}
3. 构造方法与重载:定义一个网络用户类,信息有用户 ID、用户密码、 email 地址。在建立类的实例时把以上三个信息都作为构造函数的参数输入, 其中用户 ID 和用户密码时必须缺省时 email地址是用户 ID 加上字符串"@gameschool.com"。
public class WebUser {
      //属性
      String id;
      String passWord;
      String email;
      //构造方法
      public WebUser(String id,String passWord) {
                this.id = id ;
                this.passWord = passWord;
                this.email = this.id + "@gameschool.com";
      }
      public WebUser(String id,String passWord,String email) {
                this(id,passWord);
                this.email = email;
      }
      //显示方法
      public void display() {
                System.out.println("用户id:" + this.id + "用户密码:" + this.passWord + "用户邮箱:" + this.email);
      }
      public static void main(String[] args) {
                WebUser wu = new WebUser("sjs","123456");
                wu.display();
      }
}
第五节   初识继承、封装与多态

Huggo1995 发表于 2019-10-22 20:00

你倒是多学一点啊!{:1_926:}

25pojieXY 发表于 2020-3-7 18:52

Songzhiqiang 发表于 2019-10-22 19:50
希望楼主可以坚持下来,后面的我是小白,需要楼主带一下,谢谢

站个队,刚刚开始学Java,学习的路上需要领头人

呵呵0214 发表于 2019-10-22 19:21

加油,我看好你,哈哈哈哈啊哈哈

叫我流浪 发表于 2019-10-22 19:31

皮这一下开心么{:301_997:}

Songzhiqiang 发表于 2019-10-22 19:50

希望楼主可以坚持下来,后面的我是小白,需要楼主带一下,谢谢

GODV 发表于 2019-10-22 20:44

Songzhiqiang 发表于 2019-10-22 19:50
希望楼主可以坚持下来,后面的我是小白,需要楼主带一下,谢谢

共同学习,共同进步!!

GODV 发表于 2019-10-22 20:44

Huggo1995 发表于 2019-10-22 20:00
你倒是多学一点啊!

莫急,一天更一点在于持久

dddy_HD 发表于 2019-10-22 21:01

牛逼{:301_1004:},差点被吓到

liuyiyan1990 发表于 2019-10-22 23:05

现在中学生都开始学python了。。。

njxczzw 发表于 2019-10-24 19:52

加油,楼主,我从头来过几次了 ,希望你坚持下来,看到你的文档,准备在学一次
页: [1] 2 3
查看完整版本: 【学习笔记】 小白学java section1!!!坚持就是胜利