新手小白学习JAVA,记录学习第四弹~

*标识符

标识符开头只能是大小写字母(A~Z或a~z)、美元符($)、下划线(_)。

写完首字符之后,后面可以任意接,但是要注意一些特殊符号。

标识符是大小写敏感的。

举例:

public class Demo01标识符 {    public static void main(String[] args) {        String Ahello = "qingjiang";        String hello = "qingj1";        String $heloo = "qungjai";        String _hello = "qingsh1"; ​   } }

*数据类型

一、基础数据类型

1.数值类型

①整数:byte、 short、int、long

②浮点数:float、double

③字符:char

2.boolean类型:

结果只有true和false

二、引用数据类型

1.类
2.接口
3.数组

三、各数据类型的表达方式

(一)整数的四种表达方式

举例:

public class Demo02{    public static void main(String[] args) {        int num1 = 10;        byte num2 = 19;        short num3 = 333;        long num4 = 9999999L;        //如果定义的数字一样,怎么区别这个数字用了“long“,在数字后面加一个大写字母”L“   } }

(二)浮点数

举例:

public class Demo02{    public static void main(String[] args) {        float num5 = 11.1F;//怎么区别这个小数用了“float“,在数字后面加一个大写字母”F“        double num6 = 123.32132112;   } }

(三)字符类型

举例:

public class Demo02{    public static void main(String[] args) {        char name = '小' //字符只能容纳一个字,多一个就不行,并且引号使用的的是单引号‘’   } }

(四)字符串类型

举例:

public class Demo02{    public static void main(String[] args) {       String namea = "你好小鱼";   } }

(五)布尔值

举例:

public class Demo02{    public static void main(String[] args) {        boolean flag = true;   } }

或者:

public class Demo02{    public static void main(String[] args) {        boolean flag = false;     } }

*类型转换

一、自动转换:

低容量向高容量转换

举例:

public class Demo04 {    public static void main(String[] args) {        int i = 128;        double b = i;        System.out.println(i);        System.out.println(b);        //运行结果均为128   } }

二、强制转换:

高容量想低容量转换

举例:

public class Demo04 { public static void main(String[] args) { int i = 128; byte b = (byte) i; //要将int i转换成byte i 在i的前面输入类型,用括号括起来即可 System.out.println(i);//输出为128 System.out.println(b);//输出为-128,结果错误,为什么?因为byte的最大值为127,存在一个内存溢出的问题 } }

内存溢出问题举例:

public class Demo04 { public static void main(String[] args) { int money = 10_0000_0000; int years = 20; int total = money*years;//结果为-1474836480,计算时候溢出了 long total2 = money*years;//输出结果和上面相等,因为在计算时,money和years都先默认时int,在转换前就已经存在溢出问题了,所以后续转换为容量更大的long也会是复数 long total3 = money*((long)years);//w在计算前先将数据进行转换,输出结果正确 System.out.println(total); System.out.println(total2); System.out.println(total3); } }

注意事项:
  • 不能对布尔值进行转换
  • 不能把对象类型不能转换为不相干的类型
  • 在把高容量转换到低容量的时候,强制转换
  • 转换的时候可能存在内存溢出,或者精度问题!
精度问题举例:

public class Demo04 { public static void main(String[] args) { System.out.println((int)23.7)//结果为:23 System.out.println((int)-45.89)//结果为:-45 } }

*变量

分为:局部变量、实例变量、类变量

一、局部变量:

是在方法里面的,即生命周期在main或其他方法的{}里面,必须声明和初始化值.

public class Demo05 { //局部变量(是在方法里面的,即生命周期在main或其他方法的{}里面),必须声明和初始化值 //main方法 public static void main(String[] args) { //例: int i = 10; System.out.println(i);//输出结果:10 } }

二、实例变量:

从属于对象(简单理解为从属于类),如果不进行初始化。这个类型会自动输出默认值 如:0 0.0 u0000。

举例:

public class Demo05 { String name; int age; public static void main(String[] args) { //变量类型 变量名字 = new Demo05() Demo05 demo05= new Demo05(); System.out.println(demo05.age);//输出结果:0 System.out.println(demo05.name);//输出结果为:null //布尔值:默认输出false //除了基本类型,其余默认值都是null } }

三、类变量:

public class Demo05 { //属性:变量 //类变量 static 从属于类的,并且会随着类一起消失 static double salary = 3000 public static void main(String[] args) { System.out.println(salary);//输出值为:3000 } }

四、变量命名规范

  • 1.所有变量、方法、类名都要见名知意
  • 2.类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单词以外,后面的单词首字母大写
  • 3.局部变量:首字母大写和驼峰原则
  • 4.常量:大写字母和下划线:MAX_GOODMAN
  • 5.类名:首字母大写和驼峰原则:Man GoodMan
  • 6.方法名:首字母小写和驼峰原则:run() runRun()

*常量

通过final这个关键词进行定义

举例:

ublic class Demo06 { static final double PI = 3.14; //final是修饰符,不存在先后顺序,可以写在static前面也可以写在static后面 public static void main(String[] args) { System.out.println(PI);//输出结果为:3.14 } }

Read more

C++ 模板编程基础:泛型编程入门与实践

C++ 模板编程基础:泛型编程入门与实践

第33篇:C++ 模板编程基础:泛型编程入门与实践 一、学习目标与重点 * 掌握模板的核心概念、分类(函数模板、类模板)及基本语法 * 理解泛型编程的思想,能够独立编写函数模板和类模板 * 掌握模板的实例化、特化、偏特化等关键技术 * 解决模板使用中的常见问题(类型推导失败、编译错误等) * 结合实际场景运用模板提升代码复用性和灵活性 * 了解模板与STL的关联,为后续STL学习奠定基础 💡 核心重点:模板的语法规则、类型参数与非类型参数的使用、模板特化的应用场景、泛型编程的核心价值 二、模板与泛型编程概述 2.1 什么是泛型编程 泛型编程(Generic Programming)是一种代码复用技术,核心思想是“编写与类型无关的通用代码,在使用时再指定具体类型”,实现“一次编写,多次复用”。 🗄️ 生活中的泛型类比: * 快递盒:同一个快递盒(通用容器)可装手机、书籍、衣物(不同类型数据)

By Ne0inhk
C++迭代器全解析:从概念到实践,掌握STL的灵魂

C++迭代器全解析:从概念到实践,掌握STL的灵魂

引言:为什么需要迭代器? 在C++的世界里,数据容器千变万化——有连续存储的vector,有链式连接的list,还有树形结构的set。如果每种容器都要单独设计访问接口,那么算法的复用性将大大降低。这正是迭代器(Iterator)诞生的意义:提供一种统一的访问机制,让算法可以独立于具体容器而工作。 想象一下,如果没有迭代器,我们需要为每个容器单独实现sort()、find()、copy()等算法。而有了迭代器,一个std::sort()就能处理所有支持随机访问的容器。这就是STL(标准模板库)设计哲学的核心——泛型编程。 迭代器的本质:泛型指针 从概念上讲,迭代器是泛化的指针。普通指针能做的,迭代器基本都能做,而且更安全、更抽象。但并非所有迭代器都像指针那样强大,这正是STL将迭代器分为五种类别的原因。 // 原生指针本身也是迭代器 int arr[5] = {1, 2, 3, 4, 5}; int* ptr

By Ne0inhk
容器适配器深度解析:从STL的stack、queue到优先队列的底层实现

容器适配器深度解析:从STL的stack、queue到优先队列的底层实现

文章目录 * 容器适配器深度解析:从STL的stack、queue到优先队列的底层实现 * 1. 栈的介绍和使用 * 1.1 栈的介绍 * 1.2 栈的使用 * 最小栈实现 * 栈的弹出压入序列 * 逆波兰表达式求值 * 1.3 stack的模拟实现 * 2. 队列的介绍和使用 * 2.1 队列的介绍 * 2.2 queue的使用 * 2.3 queue的模拟实现 * 3. 优先队列的介绍和使用 * 3.1 priority_queue的介绍 * 3.2 priority_queue的使用 * 3.3 priority_queue的模拟实现 * 4. 容器适配器 * 4.1 什么是适配器 * 4.2

By Ne0inhk
【C++初阶】:C++入门相关知识(3):引用 & inline内联函数 & nullptr相关概念

【C++初阶】:C++入门相关知识(3):引用 & inline内联函数 & nullptr相关概念

🎈主页传送门:良木生香 🔥个人专栏:《C语言》 《数据结构-初阶》 《程序设计》《鼠鼠的C++学习之路》 🌟人为善,福随未至,祸已远行;人为恶,祸虽未至,福已远离 前言:在上一篇文章中,我们学习了C++的输入输出,缺省参数以及函数重载,这些都是C++入门必备的基础知识,那么在这篇文章中,我们就要来学习剩下C++其他的基础知识,那就是引用、inline、以及nullptr这些知识。 一、引用 1.1、引用的概念和定义 引用不是定义一个新变量,而是给已经存在的变量起一个别名,那么编译器就不会为别名重新开辟空间,它和引用变量共同使用同一块空间。就好比我们把土豆称为马铃薯,番茄称为西红柿一样,都是取了一个新的别名,但是东西是同一个东西,所以引用的语法如下: 类型& 别名 = 变量 使用方法如下: int a = 10; int&

By Ne0inhk