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编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...
随机推荐
- Spring框架核心知识介绍
一:spring框架介绍 1.spring框架是为了解决复杂的企业级应用而创建的, 使用Spring可以让简单的JavaBean实现之前只有EJB才能完成的事情.但是Spring不仅仅局限于服务器 ...
- H5调用相机和相册更换头像
需求:H5调用手机的相机和相册从而实现更换头像的功能 这个功能是很常用的一个功能,因此做一个记录. 1.在头像img下加一个文件输入框 <input type="file" ...
- mongodb 启动 WARNING: soft rlimits too low, transparent_hugepage/enabled is 'always'. never
今天启动mongodb的时候,之前一直没注意,今天发现又warning,想整一整. 下面是告警 2019-09-05T12:00:55.271+0800 I CONTROL [initandliste ...
- 牛客 136J-洋灰三角 +高中数学博大精深
参考学习:http://www.cnblogs.com/l609929321/p/9500814.html 牛客 136J-洋灰三角 题意: 在一个1 * n的棋盘中,第一格放1,之后的每一个放前一个 ...
- poj 2777 Count Color(线段树(有点意思))
题目链接 http://poj.org/problem?id=2777 题意:题意是有L个单位长的画板,T种颜色,O个操作.画板初始化为颜色1.操作C讲l到r单位之间的颜色变为c,操作P查询l到r单位 ...
- Day004作业
1,写代码,有如下列列表,按照要求实现每⼀一个功能li = ["alex", "WuSir", "ritian", "barry& ...
- Dockfile 生成docker镜像文件大小的比较
下面就是我针对docker file同一个文件,按照layer层的个数的多少,分别构建了两个镜像的jenkins-master.两者大小相差300MB. <1> layer层数太多,没有将 ...
- 实验吧CTF练习题---WEB---FALSE解析
实验吧web之FALSE 地址:http://www.shiyanbar.com/ctf/1787 flag值:CTF{t3st_th3_Sha1} 解题步骤: 1.点开题目链接,观察题意 2.题 ...
- jar包运行出现中文乱码的问题
写了一个java Project,在eclipse里运行的时候不会出现乱码,但是用jar包运行的时候,出现了中文乱码. 我将它包装成了一个文件,这样就在没有jre的机器上也可以运行了.start.ba ...
- NUMA导致的MySQL服务器SWAP问题分析
[作者] 王栋:携程技术保障中心数据库专家,对数据库疑难问题的排查和数据库自动化智能化运维工具的开发有强烈的兴趣. [问题描述] 我们知道当mysqld进程使用到SWAP时,就会严重影响到MySQL的 ...