0.我为什么要写周记

作为一名Java初学者,我深知总结复习的重要性。我认为学习就是一个积累的过程。

所以我决定在这里记录下我每周学习的内容和一些总结,为以后的自己提供一些参考。

1.Java语言跨平台原理

平台:指的是操作系统(Windows,Linux,Mac)

跨平台:Java程序可以在任意操作系统上运行

一次编写到处运行即java的.class程序可以在不同操作系统上均可以运行。

(java的.class文件相当于Windows中的.exe文件,是可执行的程序)

原理:实现跨平台需要依赖Java的虚拟机 JVM (Java Virtual Machine)

2.JDK与JRE

JDK : JRE+开发工具

JRE : JVM+核心类库

使用JDK开发完成的Java程序,交给JRE运行。(JDK中包含JRE)

安装网址 : http://www.oracle.com

注意事项 : 安装路径不要有中文或者特殊符号如空格等。开发工具最好安装目录统一。

3.在Eclipse编写HelloWorld

1 public classHelloWorld{2 public static voidmain{3 System.out.println("HelloWorld");4 }5 }

4.常量

在程序执行的过程中,其值不可以发生改变的量。

字符串常量 用双引号括起来的内容(“HelloWorld”)

整数常量 所有整数(12,-23)

小数常量 所有小数(12.34)

字符常量 用单引号括起来的内容('a','A','0')

布尔常量 较为特有,只有true和false

空常量 null

5.变量

在程序执行的过程中,在某个范围内其值可以发生改变的量。

从本质上讲,变量是内存中储存数据的区域,你能用它来存数据和取数据,还可以改变这个数据。

格式:数据类型 变量名 = 初始化值;

八种

字节数

数据表示范围

byte

1

-128~127

short

2

-32768~32767

int

4

-2147483648~2147483647

long

8

-263~263-1

float

4

-3.403E38~3.403E38

double

8

-1.798E308~1.798E308

char

2

表示一个字符,如(‘a’,’A’,’0’,’家’)

boolean

1

只有两个值true与false

6.类型转换

默认转换 : 范围小的数据类型直接转换成范围大的数据类型转换规则

byte,short,char—int—long—float—double

注意事项 : byte,short,char相互之间不转换,他们参与运算首先转换为int类型

格式 : 范围大的数据类型 变量 = 范围小的数据类型值;

1 public classDemoTypeCast {2 public static voidmain(String[] args) {3 //直接输出了运算的结果

4 System.out.println(3 + 4);5

6 //定义两个int类型的变量

7 int a = 3;8 int b = 4;9 int c = a +b;10 System.out.println(c);11

12 //定义一个byte类型,定义一个int类型

13 byte bb = 2;14 int cc = 5;15 System.out.println(bb +cc);16

17 //用变量接收,这个变量应该有类型18 //byte dd = bb + cc;//可能损失精度19 //byte,short,char类型在参与运算的时候会把自己提升为int类型

20 int dd = bb +cc;21 System.out.println(dd);22 }23 }

7.运算符

运算符概述

对常量和变量进行操作的符号称为运算符。

表达式概述

用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。

不同运算符连接的式子体现的是不同类型的表达式。

常用的运算符

算术运算符 : + , - , * , / , %

赋值运算符 : 基础 : = 拓展: += , -= , *= , /= , %=

关系运算符 : == , != , > , < , >= , <=

逻辑运算符 : & , | , ! , ^

三元运算符 : (关系表达式) ? 表达式1 : 表达式2;

(如果条件为true,运算后的结果是表达式1;)

(如果条件为false,运算后的结果是表达式2;)

8.键盘录入Scanner类

导包(位置放到class定义的上面)

import java.util.Scanner;

创建对象

Scanner sc = new Scanner(System.in);

调用方法接收数据

int x = sc.nextInt();

1 public classDemoScanner {2 public static voidmain(String[] args) {3 //创建键盘录入数据的对象

4 Scanner sc = newScanner(System.in);5

6 //接收数据

7 System.out.println("请录入一个整数:");8 int i =sc.nextInt();9

10 //输出数据

11 System.out.println("i:"+i);12 }13 }

9.流程控制语句

在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说程序的流程对运行结果有直接的影响。

所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。

流控语句分为三个类

9.1 顺序结构

是程序中最简单最基本的流程控制,没有特定的语法结构,

按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。

9.2 选择结构

选择结构也被称为分支结构。

选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,

逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。

选择就结构有两种,if语句,switch语句。

1 //if语句的三种格式

2 if(){};3 if(){}else{};4 if(){}elseif(){}...else{};5 //switch语句

6 switch(表达式){7 case目标值1:8 语句体1;9 break;10 case目标值2:11 语句体2;12 break;13 case目标值3:14 语句体3;15 break;16 .17 .18 .19 default:20 语句体n+1;21 }

9.3 循环结构

循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,

当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,

从而结束循环,否则循环将一直执行下去,形成死循环。

三种循环结构 1. for 2.while 3. do while

1 for(初始表达式;布尔表达式;步进表达式){2 循环体;3 }4 //for循环中定义的变量一旦循环结束将不能使用5 //for循环通常使用在次数确定的情况下

初始化表达式;while(布尔表达式;){

循环体;

步进表达式;

}//while循环通常使用在次数不确定的情况下

初始化表达式do{

循环体

步进表达式

}while(布尔表达式);//do while 会先执行一次循环体,不论是否达成循环条件

10.跳转控制语句

我想让循环在某一步的时候结束或者跳过某些数据不要这些数据,现在就做不了这件事情。

为了弥补这个缺陷,Java就提供了break,continue来实现控制语句的中断和跳转。

break 中断

break的使用场景:

在选择结构switch语句中

在循环语句中

离开使用场景的存在是没有意义的

break的作用:

跳出单层循环

continue 继续

continue的使用场景:

在循环语句中

离开使用场景的存在是没有意义的

continue的作用:

单层循环对比break,然后总结两个的区别

break 结束当前循环

continue 结束本次循环,继续下一次循环

11.随机数Random

概述

用于产生一个随机数

使用步骤(和Scanner类似)

导包

import java.util.Random;

创建对象

Random r = new Random();

获取随机数

int number = r.nextInt(10);

产生的数据在0到10之间,包括0,不包括10。

括号里面的10是可以变化的,如果是100,就是0-100之间的数据。

也可以产生一个随机对象。

1 String s1 =r.next();2 double s2 =r.nextdouble();3 byte s3 =r.nextbyte();4 .5 .6 .

12.数组

数组是存储同一种数据类型多个元素的容器。

数组既可以存储基本数据类型,也可以存储引用数据类型。

数组的定义格式

格式1:数据类型[] 数组名;

格式2:数据类型 数组名[];

数组的初始化分为两种

1.动态初始化

格式:数据类型[] 数组名 = new 数据类型[数组长度];

例:int[] arr = new int[3];

2.静态初始化

数据类型[] 数组名 = new 数据类型[]{元素值1,元素值2,…};

例:int[] arr = new int[]{1,2,3};

数组操作的两个常见小问题

数组索引越界异常ArrayIndexOfBoundsException

访问到了数组中的不存在的索引时发生。

空指针异常NullPointerException

数组引用没有指向对象,却在操作对象中的元素时。

13.二维数组

二维数组定义格式

数据类型[][] 数组名;(推荐)

数据类型 数组名[][];

数据类型[] 数组名[];

初始化方式

数据类型[][] 变量名 = new 数据类型[m][n];

m:二维数组的长度(二维数组中一维数组的个数)

n:二维数组中一维数组的长度

数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};

简化版格式:数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};

1 //二维数组的遍历

2 public classDemoArrayArrayTest {3 public static voidmain(String[] args) {4 //定义二维数组

5 int[][] arr = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9} };6 for(int y=0; y

11 }12 }13 }

14.方法

方法就是完成特定功能的代码块

在很多语言里面都有函数的定义

函数在Java中被称为方法

格式

修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) {

方法体;

return 返回值;

}

格式解释

修饰符目前记住 public static

返回值类型用于限定返回值的数据类型

方法名一个名字,为了方便我们调用方法

参数类型用于接收调用方法时传入的数据的类型

参数名用于接收调用方法时传入的数据的变量

方法体完成功能的代码

return 结束方法,把返回值带给调用者

写一个方法首先有两点需要明确

返回值类型明确功能结果的数据类型

参数列表明确有几个参数,以及参数的类型

注意事项:方法定义完成之后,没有调用没有意义,不调用不执行。

1 publicclass DemoMethod {2 /*

3 * 写一个方法,用于求和。4 * 两个明确:返回值类型int参数列表int a,int b5 */

6 public static intsum(inta,intb){7 /*int c = a + b;8 return c;*/

9 returna +b;10 }11 }

方法重载

方法重载概述

在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。

方法重载特点

与返回值类型无关,只看方法名和参数列表

在调用时,虚拟机通过参数列表的不同来区分同名方法

public classDemo02Method {publicstaticvoid main(String[] args) {int a = 10;int b = 20;//求和

int result =sum(a, b);

System.out.println("result:" +result);int c = 30;//求和

result =sum(a,b,c);

System.out.println("result:"+result);

}//两个float类型的数据求和

public static float sum(float a,floatb) {return a +b;

}//三个整数的求和

public static intsum(inta,intb,intc) {return a + b +c;

}//两个整数的求和

public static int sum(int a, intb) {return a +b;

}

}

方法参数传递问题

参数传递概述

可以理解当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数,

这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了。

这种传递方式,我们称为参数传递。

在这里,定义方法时,参数列表中的变量,我们称为形式参数

调用方法时,传入给方法的数值,我们称为实际参数

参数是基本类型及图解

形式参数的改变不影响实际参数。

15.练习

一年有四季;3,4,5春季;6,7,8夏季;9,10,11秋季;12,1,2冬季

用if语句实现

1 public classDemo01Test {2 public static voidmain(String[] args) {3 //键盘录入一个月份,用Scanner实现

4 Scanner sc = newScanner(System.in);5 //接收数据

6 System.out.println("请输入一个月份(1-12):");7 int month =sc.nextInt();8 if(month==1 || month==2 || month==12) {9 System.out.println("冬季");10 }else if(month==3 || month==4 || month==5) {11 System.out.println("春季");12 }else if(month==6 || month==7|| month==8) {13 System.out.println("夏季");14 }else if(month==9 || month==10 || month==11) {15 System.out.println("秋季");16 }else{17 System.out.println("你输入的月份有误");18 }19 }20 }

用switch语句实现(case穿透)

1 public classDemo02Test {2 public static voidmain(String[] args) {3 //键盘录入一个月份,用Scanner实现

4 Scanner sc = newScanner(System.in);5 //接收数据

6 System.out.println("请输入月份(1-12):");7 int month =sc.nextInt();8 //通过case穿透现象改进代码

9 switch(month) {10 case 1:11 case 2:12 case 12:13 System.out.println("冬季");14 break;15 case 3:16 case 4:17 case 5:18 System.out.println("春季");19 break;20 case 6:21 case 7:22 case 8:23 System.out.println("夏季");24 break;25 case 9:26 case 10:27 case 11:28 System.out.println("秋季");29 break;30 default:31 System.out.println("你输入的月份有误");32 break;33 }34 }35 }

2.数组元素反转

1 public classDemoTest {2 public static voidmain(String[] args) {3 //定义一个长度为5的数组

4 int[] arr = new int[5];5

6 //通过键盘录入数据给数组中的元素赋值

7 Scanner sc = newScanner(System.in);8 for (int x = 0; x < arr.length; x++) {9 System.out.println("请给出第" + (x + 1) + "个元素");10 arr[x] =sc.nextInt();11 }12

13 System.out.println("反转前的数组元素:");14 printArray(arr);15

16 //定义方法将arr数组中的内容反转

17 reverse(arr);18

19 System.out.println("反转后的数组元素:");20 //定义方法遍历数组

21 printArray(arr);22 }23

24 //遍历数组

25 public static void printArray(int[] arr) {26 System.out.print("[");27 for(int x=0;x

36 /*

37 * 两个明确: 返回值类型:void 参数列表:int[] arr38 */

39 public static void reverse(int[] arr) {40 /*

41 利用for循环遍历数组42 初始化表达式定义两个指针,记录第一个元素和最后一个元素:int min = 0,max = arr.length-1;43 布尔表达式:min

46 for(int min=0,max=arr.length-1;min<=max;min++,max--) {47 //利用第三方变量完成数组中的元素交换*

48 int temp =arr[min];49 arr[min] =arr[max];50 arr[max] =temp;51 }52 }53 }

3.数组作为返回值例:将五个参数中 平均值与和 存储到数组中并返回例如有五个int类型数据 4,23,221,2,111

1 public classTest2 {2 public static voidmain(String[] args) {3

4 int[] arr = getArr(4,23,221,2,111);5 }6 /*

7 * 返回值类型是一个数组类型 说明返回值就是一个数组8 * 将五个参数中 平均值与和 存储到数组中并返回9 * 第一个元素是平均值 第二个元素是和10 */

11 public static int[] getArr(int a,int b,int c,int d,inte){12 //求和

13 int sum = a+b+c+d+e;14 //求平均值

15 int avg = sum/5;16 //将和与平均值存储到数组中17 //创建一个数组 存储平均值与和 长度为2

18 int[] arr = new int[2];19 arr[0] =avg;20 arr[1] =sum;21

22 return arr;//返回的数组

23 }24 }

java周记_Java学习周记week01相关推荐

  1. java周记_Java学习周记2

    面向对象特征之三 多态性,在Java中有两种体现 1.方法的重载(overload)和重写(overwrite) 2.对象的多态性:可以直接应用在抽象类和接口上 Java引用变量有两个类型:编译时类型 ...

  2. qq传java文件_java学习:基于TCP的网络文件传输(可改写的QQ文件传输)

    由于最近要写个仿聊天程序中文件传输的内容,又学习了一下流的知识 找了好久没找到很全的,后来不知道哪个地方找了个不错的客户端和服务器端的代码,自己改了下,感觉还行吧.放到博客上来帮助记忆 服务器端: p ...

  3. java 异常_Java学习——异常与异常处理

    学习这件事不在乎有没有人教你,最重要的是在于你自己有没有觉悟和恒心.--法布尔 一.异常简介 异常:程序出现意外导致中断指令流的一种事件. 异常是一个类,继承于Throwable类,其中包括2个主要大 ...

  4. java书籍_Java学习必备书籍(快来收藏)

    Hello,everyone! 今天圆圆煞费苦心的从JavaGuide.CSDN.豆瓣读书等平台搜索相关信息为大家整理了一份学习<Java的必备书籍>精华推荐,希望能够帮助更多的热爱Jav ...

  5. java瞎子_Java学习路线,及各方面知识点

    一:入门阶段 学习目标:Java程序员 1:  熟悉jdk,jvm,eclipse,安装于配置jdk 2:熟悉并掌握java的基础语法,类,抽象类,接口,内部类等概念 3: java核心编程,如输入输 ...

  6. java教程_java学习的秘籍

    (1)多练(2)多问(3)自己动手,调试错误(4)复习和总结(5)定期巩固自建的知识库与FAQ 且学且珍惜 查看全文 http://www.taodudu.cc/news/show-4430708.h ...

  7. java分割线_Java学习Day 1

    TOP 1 Mark down 学习 标题 n级标题 n个#+空格+标题+回车 最多有六级 字体 ​ 原型 哈哈哈 左右加一个*为斜体 哈哈哈 ​ 两个*为加粗 哈哈哈** ​ 三个 为斜体加粗 哈哈 ...

  8. java收获_java学习收获

    this.setName(name);跟this.Name=name;的差别: 两者是一样的,不会影响程序的运行,都是设置内容,随便怎么写,两者是没有差别的. 按快捷键alt+shift+s 提示出的 ...

  9. java等待_Java学习:等待唤醒机制

    等待唤醒机制 线程的状态 NEW 至今尚未启动的线程处于这种状态 RUNNABLE 正在Java虚拟机中执行的线程处于这种状态 BLOCKED 受阻塞并等待某个监视器锁的线程处于这种状态 WAITIN ...

最新文章

  1. (一)Android Studio 安装部署 华丽躲坑
  2. 树莓派镜像源切换之旅.md
  3. 手机站点开发及手机中图片加速显示img的Canvas方法
  4. 阿里Druid数据库连接池配置解释
  5. Linux命令行抓包及包解析工具tshark(wireshark)使用实例解析
  6. 如何在移动硬盘上安装Linux
  7. 纯ASP上传图像文件到数据库的最佳例子
  8. Hibernate学习3—映射对象标识符(OID)
  9. 源码编译安装php-3.5.8
  10. oracle数据库数据消失,,保存在数据库里的数据莫名其妙的消失
  11. 190303每日一句
  12. 博弈论学习笔记(六)纳什均衡之约会游戏与古诺模型
  13. php dw文件上传下载,PHP-文件上传
  14. C# Xamarin For Android移动开发基础进修篇
  15. HKC PG27P3评测 HKC PG27P3怎么样
  16. COSMOS认证咨询,COSMOS认证推出了天然有机化妆品的标签认证法
  17. 软件推荐:16个你还没用过的优秀软件(多个类别)
  18. 程序员依然是这个时代,贫寒学子翻身的不二选择
  19. macOS conda 安装指定版本的 Pytorch
  20. 线性代数基础10--特征值与特征向量,行列式的空间关系

热门文章

  1. git compare对比
  2. 开源实时日志分析平台—ELK
  3. 马云对996的表态,会让他跌下神坛吗?
  4. SQL Join,Left Join,Right Join用法
  5. 听说你写sql很溜,一条sql查询语句是如何执行的?
  6. ASO优化之竞品分析该怎么做
  7. rpg服务器怎么修改重生点,DOTA2重生游戏设置 如何玩自定义RPG游戏
  8. 按键精灵易语言c,易语言怎么和按键精灵结合在一同...
  9. 小米平板6什么时候上市?2023年参数配置发布时间最新消息一览
  10. 项目变更控制委员会(CCB)