【学习笔记】 小白学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();
}
}
第五节 初识继承、封装与多态
你倒是多学一点啊!{:1_926:} Songzhiqiang 发表于 2019-10-22 19:50
希望楼主可以坚持下来,后面的我是小白,需要楼主带一下,谢谢
站个队,刚刚开始学Java,学习的路上需要领头人 加油,我看好你,哈哈哈哈啊哈哈 皮这一下开心么{:301_997:} 希望楼主可以坚持下来,后面的我是小白,需要楼主带一下,谢谢 Songzhiqiang 发表于 2019-10-22 19:50
希望楼主可以坚持下来,后面的我是小白,需要楼主带一下,谢谢
共同学习,共同进步!! Huggo1995 发表于 2019-10-22 20:00
你倒是多学一点啊!
莫急,一天更一点在于持久
牛逼{:301_1004:},差点被吓到 现在中学生都开始学python了。。。 加油,楼主,我从头来过几次了 ,希望你坚持下来,看到你的文档,准备在学一次