Java基础学习笔记(一) - 基础语法
1.Java程序开发过程
编译: 是指将我们编写的Java源文件翻译成JVM认识的class文件,javac编译器会检查我们所写的程序是否有错误,有错误就会提示出来,如果没有错误就会编译成功。
运行:是指将编译好的class文件交给JVM去运行。
2.第一个Java程序Hello World
public class HelloWorld {
public static void main(String[] args){
System.out.println("hello world");
}
}
main方法:是程序的主方法,写法是固定格式不可以更改,main方法是程序的入口,JVM在运行程序的时候,都会从main方法这里开始执行。
3.程序注释
注释的作用是对代码解释说明。
//我是一个单行注释 /*
我是一个多行注释
我是一个多行注释
*/
4.关键字keywords
在程序中,有很多java语言已经定义好的单词,具有特殊含义,如public,class,static,void等。
5.标识符
标识符:在程序中我们自己定义的内容,如类的名字,方法的名字,变量的名字等。
命名规则(牢记):
- 标识符可以包含数字,字母,_(下划线),$(美元符号)。
- 标识符不能以数字开头。
- 标识符不可以和关键字重名。
命名规范:
- 类名规范:首字母大写,后面每个单词首字符大写(大驼峰式)。
- 方法名规范:首字符小写,后面每个单词首字母大写(小驼峰式)。
- 变量名规范:全部小写。
6.常量和变量
6.1 常量
在Java程序中固定不变。
6.2 变量
在Java程序中可以变化。
int num1 = 0
//定义变量的格式(三要素)
数据类型 变量名 = 数据值;
Java中要求一个变量每次只能保存一个数据,而且必须声明数据类型,如int(整型)。
基本数据类型:
引用数据类型(引用的是内存地址,不是实际的值):
类,数组,接口。
变量使用要求:
- 在同一个作用域,变量不可以重名。
- 定义的变量,不赋值不能使用。
6.3 变量和常量的运算
变量d赋值报错的原因是因为,a和b都为变量,编译器不确定是否超过byte的取值范围。
变量c没报错,常量1和2都是固定数值,计算结果也是固定的,没有超过byte的取值范围。
7.数据类型转换
7.1 自动转换
自动转换:在进行运算操作时将取值范围小的类型自动转换为取值范围大的类型。
转换规则:
public static void main(String[] args){
int a = 1;
float b = 1;
//运行结果为2.0
System.out.println(a + b);
}
7.2 强制转换
强制类型转换:主动将取值范围大的类型自动转换为取值范围小的类型。
转换格式:
public static void main(String[] args){
int a = 1;
byte b = (byte)a;
System.out.println(b);
}
强烈注意:
- 浮点转换整数时,小数点后被取消,可能造成数据损失精度。
- int转换short时失去两个字节,可能造成数据丢失。
8.运算符
8.1 算数运算符
+符号在遇到字符串时表示连接,拼接的含义。
8.2 赋值运算
注意:s+=1和s=s+1的区别(s为short类型)
s = s + 1 实际上执行了两次运算,一计算s+1的结果(结果为int),二将s+1的计算结果赋值给s(s为short类型,将int类型结果赋值给s会发生错误)。
s += 1 只运算一次,并带有强制转换的特点,也就是说s += 1就是 s = (short)(s+1)。
8.3比较运算符
8.4 逻辑运算符
逻辑运算的结果只有true和false。
8.5 三元运算符
计算方式:
- 表达式为true,结果1赋值给变量
- 表达式为false,结果2赋值给变量
public class HelloWorld {
public static void main(String[] args){
int a = (1==2 ? 100:200);
System.out.println(a);//200
}
}
9.Java中的方法
方法:将一个功能抽取出来,单独定义在一个方法内。
作用:实现代码复用,解决代码冗余。
9.1 方法的定义
- 位置:方法必须定义在类中,方法不能定义在另一个方法中。
- 返回值:return返回的类型必须和声明的返回值类型相同,否则编译失败。
9.2 方法的调用
方法定义完毕后,方法不会自己运行,必须被调用才能执行。
调用方式:
- 直接调用
- 赋值调用
- 输出语句调用
public class HelloWorld {
public static void main(String[] args){
method1();//直接调用
int x = method1();//赋值调用(必须有返回值才能使用)
System.out.println(method1());//输出语句调用
}
public static int method1(){
System.out.println("我是方法1");
return 1;
}
}
9.3 方法重载
含义:在同一个类中,允许存在多个同名方法,只要他们的参数列表(个数不同,类型不同,顺序不同)不同即可。
JVM在调用方法时会根据参数列表找到对应的方法执行。
public class HelloWorld {
public static void main(String[] args){
method1(1,2);
method1("1",2);
}
public static void method1(int a,int b){
System.out.println("我是方法1");
}
public static void method1(String a,int b){
System.out.println("我是方法1的重载");
}
}
10.流程控制
概述:控制程序执行顺序。
10.1 判断语句
从上到下的顺序执行,只执行一层,没有满足的条件则执行else。
10.2 选择语句
首先计算表达式的值,其次和case依次比较,一旦有对应的值,就会执行相应的语句,执行完毕break(break一定要写,否则程序会继续向下执行,直到选择语句结束)跳出,如果所有都不匹配则执行default。
10.3 循环语句
循环可以嵌套。
while(true)表示死循环。
for和while区别:
- for作用域的变量会在执行完毕后,自动销毁。while不会。
- 已知循环次数使用for,未知使用while。
10.4 跳出语句
- break:终止switch语句或循环。
- continue:结束本次循环,继续下一次循环。
11.数组
概念:数组就是存储数据的容器,数组中的数据类型一致。
11.1 创建数组
int[] arr1 = new int[3];
int[] arr2 = new int[]{1,2,3,4,5};
int[] arr3 = {1,2,3,4,5};
数组实际上是内存中的地址。
JVM的内存划分:
11.2 常用操作
- 访问:使用索引。arr[1](如果索引1不存在会导致数组越界,arr为null会导致数组空指针异常)。
- 遍历:使用for循环。
11.3 方法中使用数组
- 数组作为方法参数。(参数为基本类型时,传递的是数据值,为引用类型时,传递的是内存地址。)
- 数组作为方法返回值。(声明类型必须正确)
温馨提示
- 如果您对本文有疑问,请在评论部分留言,我会在最短时间回复。
- 如果本文帮助了您,也请评论关注,作为对我的一份鼓励。
- 如果您感觉我写的有问题,也请批评指正,我会尽量修改。
Java基础学习笔记(一) - 基础语法的更多相关文章
- Java Script 学习笔记 (一) 基础
1. 设置变量 const: 赋常量,不可更改. let :设置可更改变量. ES6 中推荐使用let 而不是var. Let 和var的区别 : let 将变量的作用域限定在当前{}中, var 定 ...
- Java学习笔记之---基础语法
Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- Java基础学习笔记(一)
Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...
- ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现
ASP.NET MVC 学习笔记-2.Razor语法 1. 表达式 表达式必须跟在“@”符号之后, 2. 代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...
- Java IO学习笔记四:Socket基础
作者:Grey 原文地址:Java IO学习笔记四:Socket基础 准备两个Linux实例(安装好jdk1.8),我准备的两个实例的ip地址分别为: io1实例:192.168.205.138 io ...
- Java后端高频知识点学习笔记1---Java基础
Java后端高频知识点学习笔记1---Java基础 参考地址:牛_客_网 https://www.nowcoder.com/discuss/819297 1.重载和重写的区别 重载:同一类中多个同名方 ...
- MyBatis:学习笔记(1)——基础知识
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...
随机推荐
- 快速掌握SPSS数据分析
SPSS难吗?无非就是数据类型的区别后,就能理解应该用什么样的分析方法,对应着分析方法无非是找一些参考资料进行即可.甚至在线网页SPSS软件直接可以将数据分析结果指标人工智能地分析出来,这有多难呢 ...
- B-xor_2019牛客暑期多校训练营(第四场)
题意 给出n个数组(每组数个数不定),m个询问 l, r, x 序号在区间\([l,r]\)的每个数组是否都可以取出任意个数异或出x 题解 判断一个数组能否异或出x,是简单的线性基问题 判断多个线性基 ...
- CodeForces 780 E Underground Lab
Underground Lab 题解: 如果遍历一棵树,我们可以发现最多需要走的步数也不会超过2 * n步. 所以我们选出一棵树,然后遍历一边这颗树. 然后把序列分成k块就好了. 代码: #inclu ...
- poj 1182 食物链(种类并查集 ‘初心者’)
题目链接:http://poj.org/problem?id=1182 借着这题可以好好理解一下种类并查集,这题比较简单但挺经典的. 题意就不解释了,中问题. 关于种类并查集结局方法也是挺多的 1扩增 ...
- JavaScript new的运行过程
参考 MDN网站的运算符 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/new new 运算符 ...
- 在Linux查看版本命令
1.在终端中执行下列指令: cat /etc/issue 可以查看当前正在运行的 Ubuntu 的版本号. 2. 使用 lsb_release 命令也可以查看 Ubuntu 的版本号,与方法一相比,内 ...
- java基础面试(二)
最近有搜了几个面试题,大家一起来探讨一下. 1.Oracle 的分页 --分页查询一 select * from (select a1.*,rownum rn from (select * from ...
- Junit测试Controller(MockMVC使用),以及传输@RequestBody数据解决办法
转自:http://www.importnew.com/21153.html 一.单元测试的目的 简单来说就是在我们增加或者改动一些代码以后对所有逻辑的一个检测,尤其是在我们后期修改后(不论是增加新功 ...
- 实验吧CTF练习题---WEB---Forms解析
实验吧web之Forms 地址:http://www.shiyanbar.com/ctf/1819 flag值:ctf{forms_are_easy} 解题步骤: 1.查看页面源代码,从中发现&q ...
- 一些数组排序算法的简单实现(冒泡、插入、希尔、归并和qsort)
#include <stdlib.h> #include <string.h> #include "sort.h" //冒泡排序 int bubbleSor ...