Java学习笔记(一)环境安装与java基础
学习笔记01
两年前学的Java,现在已经忘得差不多了,跟着狂神说Java的视频从头开始学,希望能救一救ww
一、JDK JRE JVM
1. JDK
java development kit
2. JRE
java Runtime Environment
3. JVM
java virtual machine
二、java代码编写
public class Hello{//类
public static void main(String[] args){//main方法
System.out.println("Hello World!");//输出
}
}
三、java程序运行机制
编译型
一下子全部编译完成,对操作系统要求低,c,c++
解释型
一点一点解释/编译,
java源文件通过javac命令预编译为class文件
四、idea
1. IDE
集成开发环境
2. 安装
参考
五、Java基础语法
1. 注释 标识符 关键字
1. 注释
注释是一个非常好的习惯
2. 关键字
3. 标识符
标识符不能使用关键字,且大小写敏感,能用中文但不推荐。
2. 数据类型
1. 强类型语言
要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用(安全性高)
java c++
2. 弱类型语言
3. Java的数据类型分为两大类
- 基本类型
- 数值类型
- boolean类型
//八大基本类型
int num1 = 10;//4字节
byte num2 = 20;//1字节
short num3 = 30;//2字节
long num4 = 30L;//8字节 Long类型要在数字后面加L
//小数:浮点数
float num5 = 50.1F;//4字节
double num6 = 3.1415936535;//8字节
//字符
char name = 'A';//2字节
//字符串 String 不是关键字,而是类
String namea = "tyrantblue";
//布尔值
boolean flag = true;//占1位,8位等于1字节
//boolean flag1 = false;
类型扩展
public class Demo03 {
public static void main(String[] args) {
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制x
int i = 10;
int i1 = 010;
int i2 = 0x10;
int i3 = 0b10;
System.out.println(i);
System.out.println(i1);
System.out.println(12);
System.out.println(i3);
System.out.println("===================================================");
//浮点数拓展: 银行业务如何表示?
//BigDecimal
//======================================================================
//float 有限 离散 舍入误差 大约 接近但不等于
//double
//最好避免完全使用浮点数去比较
//最好避免完全使用浮点数去比较
//最好避免完全使用浮点数去比较
float f = 0.1f;//0,1
double d = 0.1;//0.1
System.out.println(f==d);//false
float d1 = 23475932458739475384f;
float d2 = d1 + 1;
System.out.println(d1==d2);//true
//=============================================================
//字符拓展
//=============================================================
System.out.println("===================================================");
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1);
System.out.println(c2);
System.out.println((int)c2);
}
}
遇到了输出中文乱码的问题,参考这篇文章解决了
所有的字符本质都是数字,存在一个Unicode表,占两字节,用\u来转义
//转义字符
// \t 制表符
// \n 换行符
// ......
System.out.println("Hello world!");
System.out.println("===================================================");
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa==sb);//false
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);//true
//对象 从内存分析
//布尔值扩展
boolean flag = true;
if(flag==ture){}//新手
if (flag){}//老手
//Less is more! 代码要精简易读
- 引用类型
- 类
- 接口
- 数组
4. 类型转换
由于java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
由低到高
byte, short, char->int->long->float->double
运算中,不同类型的数据先转化为同一类型,然后进行运算。
小数的优先级一定大于整数
public class Demo05 {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i;//内存溢出,byte大小为2字节
System.out.println(b);//-128
//强制类型转换 (类型)变量名 高-->低
//自动转换转换 低-->高
/*
注意点:
1. 不能对布尔类型进行转换
2. 不能把对象类型转换为不相干的类型
3. 在把高容量转化为低容量时,用强制转换
4/ 转换的时候可能存在内存溢出,或者精度问题!!!
*/
System.out.println("======================================");
System.out.println((int)23.7);//23
System.out.println((int)-45.89f);//-45
System.out.println("======================================");
char c = 'a';
int d = c+1;
System.out.println(d);//98
System.out.println((char)d);//b
}
}
- 溢出的一些问题
public class Demo06 {
public static void main(String[] args) {
//操作比较大的数时,注意溢出问题
//JDK7的新特性(我已经更到JDK19了(= = ) 数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 23;
int total = money*years;//1525163520, 已经溢出了
System.out.println(total);
long total2 = money*years;//1525163520, 溢出了再转换没有用
System.out.println(total);
long total3 = money*(long)years;//23000000000,先转换为long类型就不会溢出
System.out.println(total3);
}
}
3. 变量 常量
1. 变量
- 变量就是可以变化的量
- Java是一种强类型语言,每个变量都必须声明其类型
- Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
type varName [=value] [{,varName[=value]}];
//数据类型 变量名 = 值 ; 可以使用逗号隔开来声明多个同类型变量
- 注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
public class Demo07 {
public static void main(String[] args) {
//int a=1,b=2,c=3;不建议一行定义多个变量 //注意程序可读性
int a=1;
int b=2;
int c=3;
String name = "tyrantblue";
char x = 'X';
double pi = 3.14;
}
}
2. 变量作用域
- 类变量
- 实例变量
- 局部变量
public class Demo08 {
//属性:变量
//实例变量:从属于对象;如果不初始化,会赋为这个类型的默认值 0或0。0
//布尔值默认值为false
//除了基本类型,其余默认值为null
String name;
int age;
//类变量 static
static double salary = 2500;
//main方法
public static void main(String[] args) {
//局部变量:必须声明和初始化值
int i = 10;
System.out.println(i);
//变量类型 变量名字 = new Demo08();
Demo08 demo08 = new Demo08();
System.out.println(demo08.age);
System.out.println(demo08.name);
//类变量 static
System.out.println(salary);
}
//其他方法
public void add(){
//System.out.println(i);
//不能输出
}
}
3. 常量
- 常量是初始化后不能再改变的值,是不会变动的值
- 常量可以理解为一种特殊的变量,它的值被设定后,在程序运行的过程中不允许被改变
- 常量名一般使用大写字符
public class Demo09 {
//修饰符不存在先后顺序
//final 常量名=值;
static final double PI = 3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
4. 变量的命名规范
- 所有变量、方法和类名要见名知意
- **类成员变量:首字母小写和驼峰原则:moonthSalary 除了第一个单词外后面的单词首字母大写 **
- 局部变量:首字母小写和驼峰原则
- 常量:使用大写字母和下划线
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(), runRun()
4. 运算符
- java语言支持如下运算符
- 算数运算符: +, -, *, /, %, ++, --
- 赋值运算符: =
- 逻辑运算符: >, <, >=, <=, ==, !=, instanceof
- 位运算符: &&, ||, !
- 条件运算符: &, |, ^, ~ ,>>, <<, >>>
- 扩展赋值运算符: +=, -=, *=, /=
1. 算数运算符
package operator;
//二元运算符
public class Demo01 {
public static void main(String[] args) {
//Ctrl + D :复制当前行到下一行
int a = 10;
int b = 10;
int c = 10;
int d = 10;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
}
}
2. 算数运算符拓展
package operator;
public class Demo02 {
public static void main(String[] args) {
long a = 12312414353523142L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d);//Long
System.out.println(b+c+d);//Int
System.out.println(c+d);//Int
//有Long那么一定是Long,有Double一定是Double
//其他有无int结果都是int
}
}
3. 关系运算符
package operator;
//关系运算符返回的结果: 正确 or 错误 用boolean
public class Demo03 {
public static void main(String[] args) {
//if
int a = 10;
int b = 20;
int c = 41;
System.out.println(a > b);//false
System.out.println(c > b);//true
//取余运算符 % 求模
System.out.println(b % a);//0
System.out.println(c % a);//1
}
}
4. 自增自减
package operator;
//++ -- 自增,自减 一元运算符
public class Demo04 {
public static void main(String[] args) {
int a = 3;
int b = a++;//先赋值后自增
//a++ ==> a=a+1,
System.out.println(a);//4
int c = ++a;//先自增后赋值
//++a ==> a=a+1
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算2^3 2*2*2 = 8
double pow=Math.pow(2, 3);
System.out.println(pow);
}
}
5. 逻辑运算符
package operator;
//逻辑运算符
public class Demo05 {
public static void main(String[] args) {
//与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b: "+ (a&&b));//逻辑与运算,两个都为真结果才为true
System.out.println("a || b: "+ (a||b));//逻辑或运算,两个有一个为真结果就为true
System.out.println("!(a && b): "+ !(a&&b));//假变真,真变假
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);//如果前面已经短路后面就不会执行
System.out.println(c);//5
System.out.println(d);//false
}
}
6. 位运算
package operator;
public class Demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001// 异或:相同为0,不同为1
~B = 1111 0010
2*8 = 16怎么运算最快?
<< >>左移右移
<< 左移代表*2
>> 右移代表/2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3);//16
}
}
7. 扩展运算符
package operator;
public class Demo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b;//a = a + b;
a-=b;//a = a - b;
System.out.println(a);//10
//字符串连接符 + ,String在 + 前面,后面的都会转换成String进行连接
//String在 + 后面,前面会进行算数运算
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30
}
}
8. 三元运算符
package operator;
public class Demo08 {
public static void main(String[] args) {
// x ? y : z
//如果x==true, 则结果为 y, 否则结果为 z
//必须掌握,可以让代码更加精简
int score = 80;
String type = score < 60 ? "不及格":"及格";//及格
System.out.println(type);
}
}
这里遇到了控制台输出中文全是问号的情况,应该是编码的问题,但试过了网上的方法都不太行,最后解决方法是将jdk换回以前的版本,我之前的jdk版本为19,换回jdk1.8然后再把编码调成UTF-8.
- 优先级用括号更加清楚明了
5. 包机制
- 包的本质就是文件夹
- 一般利用公司域名倒置作为包名
遇到了空包直接折叠的情况,解决方法为Project右边的设置,取消勾选Compact Middle PacKages
- 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包,使用”import“语句可以完成此功能
import com.xxx.xxx;
import com.xxx.*;//*是通配符,代表导入该包下所有的类
package语句要在代码最前面
尽量不要让包里面的名字重复
6. JavaDoc
- Javadoc命令是用来生成自己API文档的
- 控制台生成如下
D:\Code\java\javaSE\基础语法\src\com\tyrantblue\base>javadoc -encoding UTF-8 -charset UTF-8 Doc.java
- 如何用idea生成javadoc
参考如下
Java学习笔记(一)环境安装与java基础的更多相关文章
- Java 学习第一步-JDK安装和Java环境变量配置
Java学习第一步——JDK安装及Java环境变量配置 [原文] 2014-05-30 9:09 Java SE 阿超 9046 views Java作为当下很主流的编程语言,学习Java的朋 ...
- openresty 学习笔记一:环境安装
openresty 学习笔记一:环境安装 openresty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第三方模块以及大多数的依赖项.用于方便地搭 ...
- [java学习笔记]JDK的安装和环境变量的配置
1.JDK的下载和安装 jdk(java development kit)是java提供给我们的一套java开发工具,它必运行在JVM(java虚拟机)上,java语言的跨平台性就是利用java运行在 ...
- 我的Java学习笔记 -开发环境搭建
开始学习Java~ 一.Java简介 Java编程语言是一种简单.面向对象.分布式.解释型.健壮安全.与系统无关.可移植.高性能.多线程和动态的语言. Java分为三个体系: JavaSE(J2SE) ...
- Java学习第一步——JDK安装及Java环境变量配置
Java作为当下很主流的编程语言,学习Java的朋友也越来越多了,作为一门面向对象的编程语言,Java也有着安全.高 效等诸多有点.从TIOBE(TIOBE排行榜是根据互联网上有经验的程序员.课程和第 ...
- JAVA学习笔记1——环境配置
·JDK 发展史 1995 java语言诞生 1996 JDK1.0发布 1997 JDK1.1发布 1998 JDK1.2发布(Java2),JFC/Swing技术发布 1999 Java被分成了J ...
- Java学习笔记——Linux下安装配置tomcat
朝辞白帝彩云间,千里江陵一日还. 两岸猿声啼不住,轻舟已过万重山. ——早发白帝城 首先需要安装配置JDK,这里简单回顾下.Linux下用root身份在/opt/文件夹下创建jvm文件夹,然后使用ta ...
- Java学习笔记(十六)——Java RMI
[前面的话] 最近过的好舒服,每天过的感觉很充实,一些生活和工作的技巧注意了就会发现,其实生活也是可以过的如此的有滋有味,满足现在的状况,并且感觉很幸福. 学习java RMI的原因是最近在使用dub ...
- 零基础学Java之Java学习笔记(一):Java概述
什么是Java? Java是一门面向对象编程语言,可以编写桌面应用程序.Web应用程序.分布式系统和嵌入式系统应用程序. Java特点有哪些? 1.Java语言吸收了C++语言的各种优点,具有功能强大 ...
- Java学习笔记——浅谈数据结构与Java集合框架(第一篇、List)
横看成岭侧成峰,远近高低各不同.不识庐山真面目,只缘身在此山中. --苏轼 这一块儿学的是云里雾里,咱们先从简单的入手.逐渐的拨开迷雾见太阳.本次先做List集合的三个实现类的学习笔记 List特点: ...
随机推荐
- 学习ASP.NET Core Blazor编程系列十七——文件上传(上)
学习ASP.NET Core Blazor编程系列文章之目录 学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应 ...
- Pytorch 基本操作
Pytorch 基础操作 主要是在读深度学习入门之PyTorch这本书记的笔记.强烈推荐这本书 1. 常用类numpy操作 torch.Tensor(numpy_tensor) torch.from_ ...
- 微信小程序地区和location_id对应关系
点击查看代码 location_list = [ {'location_id': '101010100', 'location_name': ['北京', '北京', '北京']}, {'locati ...
- 【c#】从外部复制文本、图片到我的软件中的解决方案(支持ppt,qq等)
原文地址 https://www.cnblogs.com/younShieh/p/17010572.html 如果本文对你有所帮助,不妨点个关注和推荐呀,这是对笔者最大的支持~ 我们先考虑 ...
- Django简介以及基本使用
目录 Django简介以及基本使用 一.django简介 1.web框架的本质是什么 ? 2.python主流web框架有那些 ? 3.web框架的推导过程 二.基本使用 1.运行django注意事项 ...
- day14-JdbcTemplate-01
JdbcTemplate-01 看一个实际需求: 如果希望使用spring框架做项目,Spring框架如何处理对数据库的操作呢? 方案一:使用之前的JdbcUtils类 方案二:spring提供了一个 ...
- MySQL优化六,锁
一,MySQL中的锁 InnoDB中锁非常多,总的来说,可以如下分类: 这些锁都是做什么的?具体含义是什么?我们现在来一一学习. 1.2,解决并发事务问题 我们已经知道事务并发执行时可能带来的各种问题 ...
- vulnhub靶场之DIGITALWORLD.LOCAL: VENGEANCE
准备: 攻击机:虚拟机kali.本机win10. 靶机:digitalworld.local: VENGEANCE,下载地址:https://download.vulnhub.com/digitalw ...
- ThreadLocal 超强图解,这次终于懂了~
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 前言 大家好,我是小彭. 在前面的文章里,我们聊到了散列表的开放寻址法和分离链表法,也聊到了 HashMap ...
- 《Terraform 101 从入门到实践》 第一章 Terraform初相识
<Terraform 101 从入门到实践>这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看. 初闻不知Terraform, ...