学习笔记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的数据类型分为两大类

  • 基本类型

    1. 数值类型
    2. 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); }
}

遇到了输出中文乱码的问题,参考这篇文章解决了

解决idea中不能输出中文问题

所有的字符本质都是数字,存在一个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! 代码要精简易读
  • 引用类型

    1. 接口
    2. 数组

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]}];
//数据类型 变量名 = 值 ; 可以使用逗号隔开来声明多个同类型变量
  • 注意事项:
  1. 每个变量都有类型,类型可以是基本类型,也可以是引用类型
  2. 变量名必须是合法的标识符
  3. 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
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语言支持如下运算符
  1. 算数运算符: +, -, *, /, %, ++, --
  2. 赋值运算符: =
  3. 逻辑运算符: >, <, >=, <=, ==, !=, instanceof
  4. 位运算符: &&, ||, !
  5. 条件运算符: &, |, ^, ~ ,>>, <<, >>>
  6. 扩展赋值运算符: +=, -=, *=, /=

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

jdk8在线帮助文档

  • Javadoc命令是用来生成自己API文档的
  • 控制台生成如下
D:\Code\java\javaSE\基础语法\src\com\tyrantblue\base>javadoc -encoding UTF-8 -charset UTF-8 Doc.java
  • 如何用idea生成javadoc

参考如下

IDEA如何生成JavaDoc

Java学习笔记(一)环境安装与java基础的更多相关文章

  1. Java 学习第一步-JDK安装和Java环境变量配置

    Java学习第一步——JDK安装及Java环境变量配置 [原文]  2014-05-30 9:09  Java SE  阿超  9046 views Java作为当下很主流的编程语言,学习Java的朋 ...

  2. openresty 学习笔记一:环境安装

    openresty 学习笔记一:环境安装 openresty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第三方模块以及大多数的依赖项.用于方便地搭 ...

  3. [java学习笔记]JDK的安装和环境变量的配置

    1.JDK的下载和安装 jdk(java development kit)是java提供给我们的一套java开发工具,它必运行在JVM(java虚拟机)上,java语言的跨平台性就是利用java运行在 ...

  4. 我的Java学习笔记 -开发环境搭建

    开始学习Java~ 一.Java简介 Java编程语言是一种简单.面向对象.分布式.解释型.健壮安全.与系统无关.可移植.高性能.多线程和动态的语言. Java分为三个体系: JavaSE(J2SE) ...

  5. Java学习第一步——JDK安装及Java环境变量配置

    Java作为当下很主流的编程语言,学习Java的朋友也越来越多了,作为一门面向对象的编程语言,Java也有着安全.高 效等诸多有点.从TIOBE(TIOBE排行榜是根据互联网上有经验的程序员.课程和第 ...

  6. JAVA学习笔记1——环境配置

    ·JDK 发展史 1995 java语言诞生 1996 JDK1.0发布 1997 JDK1.1发布 1998 JDK1.2发布(Java2),JFC/Swing技术发布 1999 Java被分成了J ...

  7. Java学习笔记——Linux下安装配置tomcat

    朝辞白帝彩云间,千里江陵一日还. 两岸猿声啼不住,轻舟已过万重山. ——早发白帝城 首先需要安装配置JDK,这里简单回顾下.Linux下用root身份在/opt/文件夹下创建jvm文件夹,然后使用ta ...

  8. Java学习笔记(十六)——Java RMI

    [前面的话] 最近过的好舒服,每天过的感觉很充实,一些生活和工作的技巧注意了就会发现,其实生活也是可以过的如此的有滋有味,满足现在的状况,并且感觉很幸福. 学习java RMI的原因是最近在使用dub ...

  9. 零基础学Java之Java学习笔记(一):Java概述

    什么是Java? Java是一门面向对象编程语言,可以编写桌面应用程序.Web应用程序.分布式系统和嵌入式系统应用程序. Java特点有哪些? 1.Java语言吸收了C++语言的各种优点,具有功能强大 ...

  10. Java学习笔记——浅谈数据结构与Java集合框架(第一篇、List)

    横看成岭侧成峰,远近高低各不同.不识庐山真面目,只缘身在此山中. --苏轼 这一块儿学的是云里雾里,咱们先从简单的入手.逐渐的拨开迷雾见太阳.本次先做List集合的三个实现类的学习笔记 List特点: ...

随机推荐

  1. 学习ASP.NET Core Blazor编程系列十七——文件上传(上)

    学习ASP.NET Core Blazor编程系列文章之目录 学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应 ...

  2. Pytorch 基本操作

    Pytorch 基础操作 主要是在读深度学习入门之PyTorch这本书记的笔记.强烈推荐这本书 1. 常用类numpy操作 torch.Tensor(numpy_tensor) torch.from_ ...

  3. 微信小程序地区和location_id对应关系

    点击查看代码 location_list = [ {'location_id': '101010100', 'location_name': ['北京', '北京', '北京']}, {'locati ...

  4. 【c#】从外部复制文本、图片到我的软件中的解决方案(支持ppt,qq等)

    原文地址 https://www.cnblogs.com/younShieh/p/17010572.html 如果本文对你有所帮助,不妨点个关注和推荐呀,这是对笔者最大的支持~       我们先考虑 ...

  5. Django简介以及基本使用

    目录 Django简介以及基本使用 一.django简介 1.web框架的本质是什么 ? 2.python主流web框架有那些 ? 3.web框架的推导过程 二.基本使用 1.运行django注意事项 ...

  6. day14-JdbcTemplate-01

    JdbcTemplate-01 看一个实际需求: 如果希望使用spring框架做项目,Spring框架如何处理对数据库的操作呢? 方案一:使用之前的JdbcUtils类 方案二:spring提供了一个 ...

  7. MySQL优化六,锁

    一,MySQL中的锁 InnoDB中锁非常多,总的来说,可以如下分类: 这些锁都是做什么的?具体含义是什么?我们现在来一一学习. 1.2,解决并发事务问题 我们已经知道事务并发执行时可能带来的各种问题 ...

  8. vulnhub靶场之DIGITALWORLD.LOCAL: VENGEANCE

    准备: 攻击机:虚拟机kali.本机win10. 靶机:digitalworld.local: VENGEANCE,下载地址:https://download.vulnhub.com/digitalw ...

  9. ThreadLocal 超强图解,这次终于懂了~

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 前言 大家好,我是小彭. 在前面的文章里,我们聊到了散列表的开放寻址法和分离链表法,也聊到了 HashMap ...

  10. 《Terraform 101 从入门到实践》 第一章 Terraform初相识

    <Terraform 101 从入门到实践>这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看. 初闻不知Terraform, ...