学习java的第一周

学习java的第一周

对自己说的话:路漫漫其修远兮,吾将上下左右敲代码。在开课吧的javaEE学习生活中也一周了,之前在大学期间上过编程的课c++、java(虽然学的不怎么样),所以开始的学习任务还算简单,但也出现了很多问题。

(本人新人小白,文章如有错误,请大佬多指教)


关于原创问题:知识都是学来的,书上、网上、课堂学到的,内容是记下来整理的,不敢保证某些内容和别人的不重复,但绝不是在别人的博客上复制粘贴来的。也不靠博客赚钱,仅仅记录自己的学习过程和反思总结。


2020年9月2日星期三

java开发工具、环境配置。(工欲善其事必先利其器)

JDK 全称 Java Development ToolKit,是 Java 语言开发工具包。JDK 是整个 JAVA 的核心,包括JRE(java运行环境)、java工具和java的基础类库(API);JDK是面向开发人员的。
JRE:是指Java的运行环境,是面向Java程序的使用者。

JDK下载和安装:java11(LTS)长期支持版本,https://www.oracle.com/cn/java/technologies/javase-downloads.html

Eclipse打开官网: https://www.eclipse.org/ ,
点击 Download>Download 64bit下面的Download Packages>选择Eclipse IDE for Enterprise Java Developers下载。安装到自定义位置。

Eclipse使用:双击打开
步骤 1. 首次打开 Eclipse 会来到工作空间选择页面
步骤 2. 这样就打开了软件,进入了欢迎界面
步骤 3. 关闭欢迎页面后,点击 new→Other→Java Project 进入创建 Java 工程的界面
步骤 4. finish>don’t create(不创建module-info)>no(不打开java视图)>完成

(为什么不配图!!!PS:懒)
其实是在微信公众号上搜“软件安装管家免费版”,JDK、VC、Androidstudio、eclipse…真不是打广告,是觉得很好用很方便(最主要还是白嫖^^)
在这里插入图片描述

Java 的特性:
一种纯面向对象的编程语言。
一种与平台无关(跨平台)的语言。(它提供了在不同平台下运行的解释环境)
一种健壮的语言,吸收了 C/C++语言的优点。
有较高的安全性。(自动回收垃圾,强制类型检查,取消指针)
JVM 虚拟机可以理解成一个可运行java字节码的虚拟计算机系统,它有一个解释器组件,可以实现java字节码和计算机操作系统之间的通信,对于不同的运行平台,有不同的JVM。
JVM屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。
源文件(.Java)编译成字节码文件(.class)

GC(垃圾回收器):
JVM提供了一个系统线程,用于跟踪存储空间的分配情况,检查并释放那些可以被释放的存储空间;
GC在java程序运行过程中自启用,程序员无法精确控制和干预

注释
//单行注释

/*多行注释
*/

/**
*文档注释
*/

1·结构定义语句:一对大括号{}为一个范围
2·功能执行语句:以英文分号结束“;

变量
变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。由于该存储单元中的数据可以发生改变,因此得名为"变量"。

变量分类:
按所属的数据类型划分:
基本数据类型变量 和 引用数据类型变量

按被声明的位置划分:
局部变量:方法或语句块内部定义的变量
成员变量:方法外部、类的内部定义的变量,分为实例变量和静态变量

特别注意:类的外面不能有变量的声明
默认值
在这里插入图片描述
标识符
Java 对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。规则如下:
1.由字母、数字、下划线(_)和美元符号组成。
2.不能以数字开头。
3.区分大小。
4.长度无限制。
5.不能是 Java 中的保留关键字。
标识符命名习惯:见名知意。

示例:
合法标识符:HelloWord、username2、user_name、_userName、$abc_123
非法标识符:2UserName(数字开头)、user#Name(非法字符)、Hello World(空格)、class(关键字)

建议变量名:字母全部小写
建 议 类 名 :首字母大写,后面每个单词首字母大写(大驼峰式)
建议方法名: 首字母小写,后面每个单词首字母大写(小驼峰式)

关键字大全
Java 中有一些赋予特定的含义,有专门用途的字符串称为关键字(keyword)。全部是小写。
在这里插入图片描述

类型转换
自动类型转换:容量小的类型自动转换成容量大的数据类型。
强制类型转换:容量大的类型转换成容量小的数据类型时,要加上强制转换符。
有可能造成精度降低或数据溢出,使用时要小心。

方法
方法用于封装一段特定的逻辑功能。方法的主要要素有:权限修饰符 方法名、参数列表和返回值。
格式:
权限修饰符 返回值类型声明 方法名称(参数列表){
方法中封装的逻辑功能;
return 返回值;
}

权限修饰符详解
在这里插入图片描述
返回值详解
方法调用结束后可以返回一个数据,称之为返回值。
方法在声明时必须指定返回值的类型。
通过 return 语句返回,return 语句的作用在于结束方法且将数据返回。
如果方法没有返回值(即方法不需要返回数据),需将返回值类型声明为 void。

参数列表详解
方法的参数列表:在调用时传递给方法,需要被方法处理的数据。
在方法定义时,需要声明该方法所需要的参数变量。
在方法调用时,会将实际参数值传递给方法的参数变量。必须保证传递参数的类型和个数符合方法的声明。

运算符
算术运算符
±*/%(加、减、乘、除、取余)
X++;后置自增,x先参与运算,然后x的值加1;
++X;前置自增,x的值先加1,然后再参与运算;

X- -;后置自减,x先参与运算,然后x的值减1;- -X;前置自减,x的值先减1,然后参与运算;

赋值运算符
“=” “+=” “-=” “*=” “/=” “%=” 将一个值赋给一个变量,运算顺序是先计算等式右边,然后赋值给左边。

关系运算符
比较等号两边的操作数,返回一个布尔类型的结果。
“==” “!=”(不等于)“<” “>” “<=” “>=”

逻辑运算符
与& 、或| 、异或^ 、非! 、短路与&& 、短路或||

字符串连接运算符
+:连接字符串

三目运算符
X ? Y : Z
X 为 Boolean 类型表达式,先计算 x 的值,若为 true,整个三目运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。

Scanner方法
因为有用到颜色的地方,所以截了图

Scanner input = new Scanner(System.in); //需导包
Int i = input.nextInt();//用于红色部分可任意换八种基本数据类型和引用数据类型(如string)。
Input.next();//用于接收输入的任何数据,遇到空格停止接收,返回string类型
Input.nextline();//用于接收下一行,返回string类型
next()方法和nextline()方法不要一起使用,一起用只会从键盘上输入一次

想确保从键盘上获取的值是int(或者其他类型)
Scanner input = new Scanner(System.in);
System.out.println(“请输入”);
//在这之后加判断
If(input.hasNextInt()){
	Int i = input.nextInt();
	...
	}else{
}

程序的执行结构:
顺序结构顺序结构是一种基本的控制结构,它按照语句出现的顺序执行操作
分支结构分支结构又被称为选择结构,根据条件成立与否来执行操作,
循环结构循环结构是一种重复结构,如果条件成立,它会重复执行某一循环体直到出现不满足的条件为止


2020年9月3日星期四

判断语句和循环语句
一、if 条件语句
if 条件结构是根据条件判断之后再做处理
if(条件语句){…}
if (条件语句){…}else{…}
if (条件语句){…}else if(条件语句){…}
if (条件语句){…}else if(条件语句){…}else{…}
二、switch 语句
switch(表达式){
case 取值 1: 语句块 1;break;
case 取值 n: 语句块 n;break;
default: 语句块 n+1;break;
}
switch 语句有关规则
表达式的返回值必须是下述几种类型之一:int, byte, char, short,String;
case 子句中的取值必须是常量,且所有 case 子句中的取值应是不同的;
default 子句是可选的;
break 语句用来在执行完一个 case 分支后使程序跳出 switch 语句块;如果 case 后面没有写 break 则直接往下面执行!也叫case穿透
Case 后面的执行体可写{ }也可以不写{ }

三、while 循环
符合条件,循环继续执行;否则,循环退出
特点:先判断,再执行
while(条件表达式){
循环语句;
}

四、do-while 循环
先执行一遍循环操作,符合条件,循环继续执行;否则,循环退出
特点:先执行,再判断
do{
循环语句;
}while(条件表达式);

五、for循环
for(循环变量初始化;结束条件判断;修改循环变量){
循环语句;
}


2020年9月4日星期五

数组是相同数据类型的多个数据的容器。
这些元素按线性顺序排列。所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素;除最后一个元素外,每一个元素都有唯一的后继元素。(“简单理解就是:一个跟一个顺序排列”)。

要声明数组的类型。

创建格式
格式 1. 数据类型[] 数组名称 = new 数据类型[数组长度];
格式 2. 数据类型[] 数组名称 = {数组内容 1,数组内容 2,数组内容 3…数组内容 n};
格式 3. 数据类型[] 数组名;
格式 3 属于只创建了数组引用名, 并未在内存创建数组空间。
格式 4. 数据类型[] 数组名称 = new 数据类型[]{内容 1,内容 2,内容 3…内容 n};

下标
可以理解为数组中内容的数字序号,从 0 开始 ,对于长度为 n 的数组,下标的范围是0~n-1。可以通过下标的方式访问数组中的每一个元素

数组长度获取方法
数组名称.length

注意
使用数组不当, 会出现如下问题:
数组未赋值: 空指针异常 (NullPointerException)
超出长度的下标操作: 数组越界异常
注意:数组的长度在创建时就固定了。

遍历数组时,找出最大值和最小值时,要把数组的第一个值赋给比较值,若赋值0的话,有可能数组中所有的值都比0小。


2020年9月5日星期六

标题数据常用算法:

1、冒泡算法

原理:

  • 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  • 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  • 针对所有的元素重复以上的步骤,除了最后一个。
  • 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

名字由来:
是因为最小(或最大)的元素会经由交换慢慢“浮”到数列的顶端(降序或升序),就如同水中的气泡最终会上浮到顶端一样,故名“冒泡排序”。

升序排列的口诀:
N个数字来排队
两两相比小靠前,
外层 循环length-1
内层循环length-i-1

降序排序的口诀:
N个数字来排队
两两相比大靠前,
外层 循环length-1
内层循环length-i-1

int[] nums = {1,3,9,5,6,7,15,4,8};
		int temp;//交换用
		for(int i=0;i<nums.length-1;i++) {
			for(int j=0;j<nums.length-i-1;j++) {
				if(nums[j] > nums[j+1]) {//如果前一项比后一项大,则交换
					temp = nums[j];
					nums[j] = nums[j+1];
					nums[j+1] = temp;
				}
			}
		}
//输出查看结果
		for(int i=0;i<nums.length;i++) {
			System.out.println(nums[i]);
		}

2、二分查找 (折半查找)
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,二分查找要求数组数据必须采用顺 序存储结构有序排列。
首先,假设数组中元素是按升序排列,将数组中间位置的数据与查找数据比较,如果两者相等,则查找成功;否则利用中间位置记录将数组分成前、后两个子数组,如果中间位置数据大于查找数据,则进一步查找前子数组,否则进一步查找后子数组。
重复以上过程,直到找到满足条件的数据,则表示查找成功,直到子数组不存在为止,表示查找不成功
最大下标,最小下标,中间下标(最大+最小)/2

Int minIndex=0;
Int maxIndex=数组.length-1;
Int centerIndex=(minIndex+maxIndex)/2
//循环次数不确定,则使用while循环

当最小下标 > 最大下标时,该数据不存在
n个数中只有1个符号要求时使用,n越大,二分查找性能越高

Math.random();//生成一个0到1之间的随机数

比较字符串用equals方法


2020年9月6日星期日 总结问题

1、If(){}判断条件总出错,导致程序不进入if之内
2、解决约瑟夫环问题,用递归的方法做出来了,要求使用数组
3、扫描键盘输入,控制输入类型之间的转换
4、快递柜代码:修改信息,操作不当,会覆盖掉有用的信息


保护视力0.0!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值