黑马程序员Java基础加强

黑马程序员入学Java知识——精华总结 黑马程序员入学Java知识——精华总结   J2SE部分,Java高新技术部分,7K面试题部分等黑马入学要求的知识点总结!   一、黑马程序员—java概述与基础知识 6 1、何为编程? 6 2、Java语言概述,历史、特点 6 3、什么是跨平台性?原理是什么?JVM 7 4、Jre和Jdk的区别? 7 5、java虚拟机JVM 8 6、 Java程序运行机制 8 7 阅读详情

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

黑马程序员Java基础加强

1.  泛型是JDK1.5中一个最重要的特征。所谓泛型:就是变量类型的参数化。泛型之前,如果类别定义时的逻辑完全一样,只是里面成员变量的类型不同,需要定义多个类,这使类的数量急剧膨胀。针对这种情况,在设计了泛型。在定义类时,里面使用的类型不确定,而是让用户指定,这样减少了大量的类的定义。在定义泛型类别时,预设可以使用任何的类型来实例化泛型类型中的类型,但是如果想要限制使用泛型类别时,只能用某个特定类型或者是其子类型才能实例化该类型时,可以在定义类型时,使用extends关键字指定这个类型必须是继承某个类,或者实现某个接口。当没有指定泛型继承的类型或接口时,默认使用T extends Object,所有默认情况下任何类型都可以作为参数传入。现在有这么一个需求,希望有一个参考名称foo可以接受所有下面的实例:

foo = new GenericFoo<ArrayList>();

foo = new GenericFoo<LinkedList>();

简单来说,实例化类型持有者时,它必须是实现List的类别或其子类别。这时,就要用’?’通配符,并使用”extends”关键字限定类型持有者。我们就可以这样写:

GenericFoo<? Extends List> foo = null;这样就可以让foo指向上面的类型了。<?>的意思也是<? extends Object>。<T>在定义类使用,而<?>是创建对象时使用。

限定通配符的上边界:

正确:Vector<? extends Number> x = new Vector<Integer>();

限定通配符的下边界:

正确:Vector<? super Integer> x = new Vector<Number>();

如果使用泛型,只要代码在编译时没有出现警告,就不会遇到运行时ClassCastException。同时,避免了强制转换麻烦。

什么时候定义泛型类?当类中要操作的引用数据类型不确定的时候,早期定义Object来完成扩展。现在定义泛型来完成扩展。

泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合时会去除掉“类型”信息,使程序运行效率不受影响,对于参数化的泛型类型,getClass()方法的返回值和原始类型完全一样。由于编译生成的字节码会去掉泛型的类型信息,只要能跳过编译器,就可以往某个泛型集合中加入其它类型的数据,例如,用反射得到集合,再调用其add方法即可。

参数化类型不考虑类型参数的继承关系:

Vector<String> v = new Vector<Object>(); //错误!不写<Object>没错,写了就是明知故犯

Vector<Object> v = new Vector<String>(); //也错误!

方法中使用泛型

private static <T extends Exception> sayHello() throws T

{

try{

 

}catch(Exception e){

   throw (T)e;

}

}

类定义中使用泛型:

import java.util.ArrayList;

import java.util.LinkedList;

import java.util.List;

publicclass GenericTest<T>

{

    private T foo;

 

    public T getFoo()

    {

       returnfoo;

    }

 

    publicvoid setFoo(T foo)

    {

       this.foo = foo;

    }

   

    publicstaticvoid main(String[] args)

    {

       GenericTest<? extends List> ge = null;

       ge = new GenericTest<ArrayList>();

       ge = new GenericTest<LinkedList>();

      

       GenericTest<? super List> ge2 = null;

       ge2 = new GenericTest<Object>();

      

       GenericTest<String> ge3 = new GenericTest<String>();

       ge3.setFoo("hello world");

      

       GenericTest<?> ge4 = ge3;

       System.out.println(ge4.getFoo());

       ge4.setFoo(null);

       System.out.println(ge4.getFoo());

        }

}

2.  For-Each循环的加入简化了集合的遍历,语法形式是:for(type element : array) {

System.out.println(element)……

}

当遍历集合或数组时,如果需要访问集合或数组的下标,那么最好使用旧式的方式来实现循环或遍历,而不要使用增强的for循环,因为它丢失了下标信息。

3.  自动装箱/拆箱方便了基本类型数据和它们包装类的使用。自动装箱:基本类型自动转为包装类(如int>>Integer)。自动拆箱:包装类自动转为基本类型(如Integer>>int)。

import java.util.ArrayList;

import java.util.Collection;

 

public class BoxTest

{

         public static void main(String[] args)

         {

                   int a = 3;

                  

                   Collection<Integer> c = new ArrayList<Integer>();

                  

                   c.add(3);//将int类型的3转换为Integer类型并放到集合当中

                   c.add(a + 3);

                  

                  for(Integer i : c)

                   {

                            System.out.println(i);

                   }

                  

         }

}

 

Integer类有个缓存,它会缓存介于-128到127之间的整数。这是享元模式的一个实例。

Integer i1 = 200;

Integer i2 = 200;

                  

                   if(i1 == i2)

                   {

                            System.out.println("i1 == i2");

                   }

                   else

                   {

                            System.out.println("i1 != i2");

                   }

Integer i3 = 20;

Integer i4 = 20;

                  

                   if(i3 == i4)

                   {

                            System.out.println("i3 == i4");

                   }

                   else

                   {

                            System.out.println("i3 != i4");

                   }

 

4.  可变参数使我们可以声明一个接受可变数目参数的方法。它本质上就是一个数组,对于某个声明了可变参数的方法来说,我们既可以传递离散的值,也可以传递数组对象。但如果将方法中的参数定义为数组,那么只能传递数组对象而不能传递离散的值。可变参数必须作为方法参数的最后一个参数,即一个方法不可能具有两个或两个以上的可变参数。

public class TestVarargs

{

         private static int sum(String str, int... nums)

         {

                   System.out.println(str);

 

                   int sum = 0;

 

                   for (int num : nums)

                   {

                            sum += num;

                   }

 

                   return sum;

         }

 

         public static void main(String[] args)

         {

                   int result = sum("a", new int[] { 1, 2 });

 

                   System.out.println(result);

 

                   result = sum("b", 1, 2, 3, 4);

 

                   System.out.println(result);

 

         }

}

5.       静态导入可以导入一个类中的某个静态方法或所有静态方法,使用这些静态成员无需再给出它们的类名。例如import static java.lang.Math.*;

6.  枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法,只不过很多细节由编译器帮你完成了,所以某些程度上,enum关键字的作用就像是class或interface。定义枚举类型时,它将继承自java.lang.Enum类型。每个枚举的成员其实就是你定义的枚举类型的一个实例,它们都是public static final的。这些实例在编译期间就确定下来了,在运行期间我们无法再使用该枚举类型创建新的实例了。

枚举只有一个成员时,就可以作为一种单例的实现方式。

枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后要有分号与其他成员分隔。把枚举中的成员方法或变量等放在枚举元素的前面,编译器报告错误。

public enum Coin

{

         penny("hello"), nickel("world"), dime("welcome"), quarter("hello world");

        

         private String value;

        

         public String getValue()

         {

                   return value;

         }

        

         Coin(String value)

         {

                   this.value = value;

         }

        

         public static void main(String[] args)

         {

                   Coin coin = Coin.quarter;

                  

                   System.out.println(coin.getValue());

         }

}

7.  注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。

Override注解表示子类要重写父类的对应方法。Deprecated注解表示方法是不建议被使用的。SuppressWarnings注解表示抑制警告。

自定义注解的方法。定义一个最简单的注解:public @interface MyAnnotation {}。把它加在某个类上:@MyAnnotation public class AnnotationTest{}。用反射进行测试AnnotationTest的定义上是否有@MyAnnotation 。根据发射测试的问题,引出@Retention元注解的讲解,其三种取值:RetetionPolicy.SOURCE、RetetionPolicy.CLASS、RetetionPolicy.RUNTIME;分别对应:java源文件-->class文件-->内存中的字节码。

当注解中的属性名为value时,在对其赋值时可以不指定属性的名称而直接写上属性值即可;除了value以外的其他值都需要使用name=value这种赋值方式,即明确指定给谁赋值。

定义基本类型的属性和应用属性:在注解类中增加String color();@MyAnnotation(color="red")

用反射方式获得注解对应的实例对象后,再通过该对象调用属性对应的方法

Ø  MyAnnotation a = (MyAnnotation)AnnotationTest.class.getAnnotation(MyAnnotation.class);

Ø  System.out.println(a.color());

Ø  可以认为上面这个@MyAnnotation是MyAnnotaion类的一个实例对象

l  为属性指定缺省值:

Ø  String color() default "yellow";

l  value属性:

Ø  String value() default "zxx";

Ø  如果注解中有一个名称为value的属性,且你只想设置value属性(即其他属性都采用默认值或者你只有一个value属性),那么可以省略value=部分,例如:@MyAnnotation("lhm")。

l  数组类型的属性

Ø  int [] arrayAttr() default {1,2,3};

Ø  @MyAnnotation(arrayAttr={2,3,4})

Ø  如果数组属性中只有一个元素,这时候属性值部分可以省略大括

l  枚举类型的属性

Ø  EnumTest.TrafficLamp lamp() ;

Ø  @MyAnnotation(lamp=EnumTest.TrafficLamp.GREEN)

l  注解类型的属性:

Ø  MetaAnnotation annotationAttr() default @MetaAnnotation("xxxx");

Ø  @MyAnnotation(annotationAttr=@MetaAnnotation(“yyy”) )

Ø  可以认为上面这个@MyAnnotation是MyAnnotaion类的一个实例对象,同样的道理,可以认为上面这个@MetaAnnotation是MetaAnnotation类的一个实例对象,调用代码如下:

         MetaAnnotation ma =  myAnnotation.annotationAttr();

         System.out.println(ma.value());

还可以是class类型

 

public @interface AnnotationTest

{

         String[] value1() default "hello";//给它赋默认值

         EnumTest value2();

}

 

enum EnumTest

{

         Hello, World, Welcome;

}

@AnnotationTest(value2 = EnumTest.Welcome)

public class AnnotationUsage

{

         @AnnotationTest(value1 = {"world", "ABCD"}, value2 = EnumTest.World)

         public void method()

         {

                   System.out.println("usage of annotation");

         }

        

         public static void main(String[] args)

         {

                   AnnotationUsage usage = new AnnotationUsage();

                  

                   usage.method();

         }

}

8.  类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类加载的最终产品是位于堆区中的Class对象。有两种类型的类加载器:1.java虚拟机自带的加载器:根类加载器,扩展类加载器,系统类加载器。其中根类加载器不是java类,其他都是java类。2.用户自定义的类加载器

Java虚拟机中的所有类装载器采用具有父子关系的树形结构进行组织,在实例化每个类装载器对象时,需要为其指定一个父级类装载器对象或者默认采用系统类装载器为其父级类加载。

Java采用父委托机制进行加载,各个加载器按照父子关系形成了树形结构,除了根类加载器外,其余的都有且只有一个父加载器。父子加载器并非继承关系,也就是说子加载器不一定是继承了父加载器。当生成一个自定义的类加载器实例时,如果没有指定它的父加载器,那么系统类加载器就将成为该类加载器的父加载器。

l  当Java虚拟机要加载一个类时,到底派出哪个类加载器去加载呢?

Ø  首先当前线程的类加载器去加载线程中的第一个类。

Ø  如果类A中引用了类B,Java虚拟机将使用加载类A的类装载器来加载类B。

Ø  还可以直接调用ClassLoader.loadClass()方法来指定某个类加载器去加载某个类。

l  每个类加载器加载类时,又先委托给其上级类加载器。

Ø  当所有祖宗类加载器没有加载到类,回到发起者类加载器,还加载不了,则抛ClassNotFoundException,不是再去找发起者类加载器的儿子,因为没有getChild方法,即使有,那有多个儿子,找哪一个呢?

l  知识讲解:

Ø  自定义的类加载器的必须继承ClassLoader

Ø  loadClass方法与findClass方法

Ø  defineClass方法

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

 

public class MyClassLoader extends ClassLoader

{

         private String name; //类加载器的名字

        

         private String path = "d:\\"; // 加载类的路径

        

         private final String fileType = ".class"; // class文件的扩展名

        

         public MyClassLoader(String name)

         {

                   super(); // 让系统类加载器成为该类加载器的父加载器

                  

                   this.name = name;

         }

        

         public MyClassLoader(ClassLoader parent, String name)

         {

                   super(parent); // 显式指定该类加载器的父加载器

                  

                   this.name = name;

         }

        

         @Override

         public String toString()

         {

                   return this.name;

         }

 

         public String getPath()

         {

                   return path;

         }

 

         public void setPath(String path)

         {

                   this.path = path;

         }

        

         @Override

         public Class<?> findClass(String name) throws ClassNotFoundException

         {

                   byte[] data = this.loadClassData(name);

                  

                   return this.defineClass(name, data, 0, data.length);

         }

        

         private byte[] loadClassData(String name)

         {

                   InputStream is = null;

                   byte[] data = null;

                   ByteArrayOutputStream baos = null;

                  

                   try

                   {

                            this.name = this.name.replace(".", "\\");

                           

                            is = new FileInputStream(new File(path + name + fileType));

                           

                            baos = new ByteArrayOutputStream();

                           

                            int ch = 0;

                           

                            while(-1 != (ch = is.read()))

                            {

                                     baos.write(ch);

                            }

                           

                            data = baos.toByteArray();

                   }

                   catch(Exception ex)

                   {

                            ex.printStackTrace();

                   }

                   finally

                   {

                            try

                            {

                                     is.close();

                                     baos.close();

                            }

                            catch(Exception ex)

                            {

                                     ex.printStackTrace();

                            }

                   }

                  

                   return data;

         }

        

         public static void main(String[] args) throws Exception

         {

                   MyClassLoader loader1 = new MyClassLoader("loader1");

                  

                   loader1.setPath("d:\\myapp\\serverlib");

                  

                   MyClassLoader loader2 = new MyClassLoader(loader1, "loader2");

                  

                   loader2.setPath("d:\\myapp\\clientlib");

                  

                   MyClassLoader loader3 = new MyClassLoader(null, "loader3");

                  

                   loader3.setPath("d:\\myapp\\otherlib");

                  

                   test(loader2);

                   test(loader3);

         }

        

         public static void test(ClassLoader loader) throws Exception

         {

                   Class clazz = loader.loadClass("Sample");

                  

                   Object object = clazz.newInstance();

         }

}

2022黑马程序员Java学习路线图 原文转自:2022黑马程序员Java学习路线图 入门:Java SE基础-->Java Web(含数据库+H5+js+vue)中级:Maven-->Git-->SSM框架 -->MybatisPlus-->Spring Boot-->传智健康【项目实战】--> 瑞吉外卖【项目实战】进阶:Spring Cloud(微服务开发,学这一套就够了) 也可分技术点学: (Dubbo-->Zookeeper-->RabbitMQ-->RocketMQ-->Docker-->Redis -->MongoDB-->搜索 阅读详情

相关推荐

Java面试宝典2018:黑马程序员版

Java是一种面向对象的编程语言,自1995年由Sun Microsystems公司推出以来,因其跨平台性、安全性和简易性而广泛应用于企业级开发。Java代码在运行时通过Java虚拟机(JVM)转换成机器码,这意味着Java程序可以在任何安装了JVM的平台上执行,无需修改。| 方法 | 描述 |

weixin_42571280的博客 1100

黑马程序员 Java 最新教程:开启你的编程之旅

黑马程序员 Java 最新教程:开启你的编程之旅 【下载地址】黑马程序员Java最新教程 黑马程序员 Java 最新教程欢迎来到黑马程序员的 Java 最新教程资源页面 项目地址: https://gitcode.com/Reso...

gitblog_06512的博客 617

Zabbix Trigger actions访问出现500

本篇博客详细介绍了Zabbix访问'Trigger actions'出现的错误状况,访问界面出现500,并提供了解决方案。

格子的博客 562

黑马程序员Java零基础 (1) 基础语法

跟着黑马程序员Java零基础视频教程的笔记.简要提纲版,有问题可以看视频解答.此篇是p1-p39.

qq_53077632的博客 1109

带挂牵引车前向运动模型推导及仿真实现

牵引车-半挂车的车辆结构与普通的车辆相比增加了一个半挂车,它们之间通过鞍座相连接,为了分析半挂牵引车运动过程中的位姿和状态,本文将基于车辆的机械结构建立对应的运动学模型,该模型基于以下假设: 车辆行驶过程中,道路平坦且无凸凹; 车辆低速行驶,且运行过程中车身无侧倾和俯仰运动; 车辆行驶过程中,轮胎无形变,无侧向滑动,且无侧向力; 牵引车和半挂车均满足阿克曼转向几何原理; 牵引车与半挂车不会发现折叠。

jianmo的博客 3182

告别效率低谷:用ADS仿真手把手教你设计高回退Doherty功放(附1:2非对称案例)

本文详细解析了如何使用ADS仿真设计高回退Doherty功放,特别针对1:2非对称架构进行深入探讨。通过优化功率分配比、峰值管开启阈值等关键参数,显著提升功放在9dB回退点的效率至75%以上,适用于LTE等高PAPR信号场景。文章还提供了ADS仿真环境搭建、参数优化及工程化设计的实用技巧。

weixin_33743248的博客 453

黑马程序员Java语言进阶学习资源

黑马程序员Java语言进阶学习资源 去发现同类优质开源项目:https://gitcode.com/ 资源简介 此压缩文件包含了黑马程序员出品的Java语言进阶课程的所有源码和教程笔记。课程内容覆盖了Java编程的核心知识点,适合有一定Java基础的学习者进行进阶提升。 课程目录 以下是资源中包含的课程内容: day01: Object类、常用API day02: Collection、泛型 d...

gitblog_06712的博客 650

Git GUI学习教程

学习宗旨:快速应用,不易忘记 很遗憾,申请Git的专栏未审批,那我就不再写专栏了,把最近的学习心得写一下,我也是在学习中进行,有任何问题直接留言,回复交流,我还采用思路+实践模式快速过。 目录 1、Git是什么 2、远程仓库 1)GitHub: 2)Gitee(码云): 3、安装Git(Windows) 1)下载 ...

Alexantao 的专栏 7252

java基础黑马程序员经典题目

今天偶然看到几道传智黑马程序员-----java基础的题目,觉得不错,和大家分享一下吧。 1、请列举您了解的一些排序算法,并用Java语言实现一个效率较高的。 2、定义一个二维int数组,编写代码获取最小元素。 3、判断一个字符串是否是对称字符串,例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串 求斐波那契数列第n项

郎建伟的博客 1138

VS(QT)调用Matlab函数的方法

调试–>窗口–>异常设置–>Win32 Exceptions全部不要勾选。选择Microsoft Visual C++ 2017。将生成的.h和.lib分别放置在对应的文件夹。输入mex -setup C++输入deploytool选择。选择Realse x64。

woshigaowei5146的博客 591

msfvenom制作windows/linux/android/ios木马

msfvenom选项如下 -p, --payload<payload> 指定 payload(攻击荷载)。如果使用自定义payload,请使用'-'或者stdin指定。 -l, --list [module_typel列出指定模块的所有可用资源。模块类型包括:payloads, encoders, nops, all -n, --nopsled <length>为payload预先指定一个NOP滑动长度。 -f, --format <format>指定输出格式(使

Cwillchris的博客 2733

【亲测免费】 探索Java开发的无尽可能:黑马程序员Java开发文档大全

探索Java开发的无尽可能:黑马程序员Java开发文档大全 【下载地址】黑马程序员Java开发文档大全分享 黑马程序员Java开发文档大全欢迎来到【黑马程序员Java开发文档大全】,这里是Java开发者的一站式资料库,无论你是初学者还是资深工程师,都能在这里找到你需要的宝贵资料 ...

gitblog_06570的博客 575

最强游戏投屏串流搭档Sunshine+Moonlight配置方法

因祸得福的是,sunshine作为开源的self-host的服务端,不仅可以代替Novidia的服务端角色,还拓展了moonlight可以服务的主机,非novidia显卡的PC也可以通过这对搭档实现高质量的游戏窜流投屏了。回到moonlight,点击电脑图表,会给你一个Pincode,到Sunshine控制台,菜单点击Pin,输入moonlight给出的pin码。高质量的图像: Moonlight支持高清(HD)和甚至4K分辨率的投屏,同时还提供了对音频的传输支持,确保用户可以享受到高质量的视频和音频。

每日出拳老爷子的博客 1万+

黑马程序员 java学习心得

首先 当然是java的理论知识是很重要的不管怎么样,能清楚的对自己学习的理论有一个清晰的认识和掌握是有必要的。这样在练习写代码时,也会事半功倍。 其次 就是练习了,刚开始看视频的时候,觉得看的时候都是能听懂的,然后就不去练习,也不去回顾。到了后来,要联系前面的知识时,才发现已经忘得差不多了。所以每次学完要相应的去敲代码,多敲,才能对所学的内容有进一步掌握。然后就是多回顾,当然,像Hellow

绕世界流浪丶 806

VictoriaMetrics | 云原生监控新宠: 使用 vmagent 工具采集 VM 集群指标实战

摘要:本文介绍了vmagent工具的安装部署及配置实践,该工具是VictoriaMetrics官方提供的指标采集组件,支持兼容Prometheus指标采集与转发。文章详细讲解了从二进制方式部署vmagent的步骤,包括下载安装、创建运行环境、配置systemd服务等过程。通过8429端口可查看采集状态,并演示了将Prometheus配置迁移到vmagent的方法。vmagent可实现远程写入VictoriaMetrics集群,为云原生监控提供高效解决方案。

全栈工程师修炼指南-IT知识分享 446

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【亲测免费】 黑马程序员 Java 最新教程

黑马程序员 Java 最新教程 【下载地址】黑马程序员Java最新教程 黑马程序员 Java 最新教程欢迎来到黑马程序员的 Java 最新教程资源页面 项目地址: https://gitcode.com/Resource-Bund...

gitblog_06525的博客 840

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

探索Java集合的奥秘:黑马程序员的宝藏笔记

探索Java集合的奥秘:黑马程序员的宝藏笔记 【下载地址】黑马程序员Java学习笔记集合 本资源文件包含了黑马程序员的Java学习笔记,重点聚焦在集合部分。内容包括源代码示例、相关图片以及详细的学习笔记,旨在帮助读者深入理解Java中的集合框架 ...

gitblog_06508的博客 607

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

黑马程序员--JAVA学习笔记

------- android培训、java培训、期待与您交流! ---------- 今天开始我的黑马程序员第一天学习,其实我之前已经开始学习了,只是今天才开始写博客。 之前有自学过半年,J2SE的基础书前前后后看过3遍了,,也在自学PHP+MYSQL,但是总感觉不在要领。 希望能进入黑马程序员9月15号的学习班,下载黑马的免费学习视频,发现里面大部分我之前都看过了,之前有下载全套的马

u011840124的专栏 444

【免费下载】 黑马程序员JAVA WEB全笔记PDF下载

本仓库提供了一份名为“黑马程序员JAVA WEB全笔记pdf”的资源文件下载。该文件包含了黑马程序员Java Web基础课程的完整笔记,涵盖了前端技术、JSP、Servlet等内容。 ## 资源内容 - **Java Web基础知识**:详细介绍了Java Web开发的基础概念和核心技术。 - **前端技术**:包括HTML、CSS、JavaScript等前端技术的基本知识和应用。 - **J

gitblog_09810的博客 2484

黑马程序员--Java基础学习01

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------    嗨罗,我是电脑小白,是一个在读的大三计算机系的妹纸。作为一名专业酱油档,前面两年学了‘Hello World’之后就到了瓶颈。现在快面临实习毕业等问题,所以不得不提高自己的专业技能。有幸知道黑马,顿时感觉前途有希望了有木有,新人初来,希望大家多多关照呀。   呃呃,我现

a810506402的博客 640

黑马程序员Java学习笔记——集合

黑马程序员Java学习笔记——集合 【下载地址】黑马程序员Java学习笔记集合 本资源文件包含了黑马程序员的Java学习笔记,重点聚焦在集合部分。内容包括源代码示例、相关图片以及详细的学习笔记,旨在帮助读者深入理解Java中的集合框架 ...

gitblog_06544的博客 625

【第三天】黑马程序员java学习

在计算机计算时,使用的是补码进行计算,而由于补码是反码往后一位移动产生的,导致最后多出来了一个10000000,即-128,所以取值范围是-128~127.弊端:利用原码计算时,如果是正数没有任何问题,但是如果是负数计算,结果会和正确的运算方向相反。(一)隐式转换(自动类型提升):取值范围小的数值转换成取值范围大的数值。可以理解为:当左边的表达式能确定最终的结果,那么右边的就不会参与运算了。(二)强制转换:取值范围大的数值转换成取值范围小的数值。问题:当转换的数据过大时,可能会造成数据错误。

2301_80057424的博客 883

黑马程序员_Java

/* 自定义异常,因为项目中会出现特有的问题, 而这些问题并未被JAVA所描述并封装对象。 所以对于这些特有的问题可以按照JAVA的对问题封装的思想。 将特有的问题,进行自定义的异常封装。 需求:在该程序中,对于除数是负数,也是错误的是无法进行的运算。 那么就需要对这个问题进行自定义的描述。 一般遇到异常JAVA可以自动抛出,我们也可以手动抛出异常,但对于自定义的异常我们只能手动抛出。 常识:

tianbei 404

黑马程序员JAVA

/定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。//要求3:通过id删除学生信息 如果存在,则删除,如果不存在,则提示删除失败。//要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。//要求5:查询数组id为“2”的学生,如果存在,则将他的年龄+1岁.//要求2:添加完毕之后,遍历所有学生信息,//要求4:删除完毕之后,遍历所有学生信息。//学生的属性:学号,姓名,年龄。

医学图像分割女研一枚~兴趣是JAVA学习;关于synapse数据集的分割、可提供创新与指导、欢迎访问! 393

黑马程序员JAVA学习日记day01

此上均为java基础概念,来源均为B站黑马程序员:Java从入门到起飞。

2401_86935697的博客 646

2021黑马程序员Java面试宝典笔记(完整版)

2021黑马程序员Java面试 一、基础篇 1. 二分查找 要求 能够用自己语言描述二分查找算法 能够手写二分查找代码 能够解答一些变化后的考法 算法描述 前提:有已排序数组 A(假设已经做好) 定义左边界 L、右边界 R,确定搜索范围,循环执行二分查找(3、4两步) 获取中间索引 M = Floor((L+R) /2) 中间索引的值 A[M] 与待搜索的值 T 进行比较 ① A[M] == T 表示找到,返回中间索引 ② A[M] > T,中间值右侧的其它元素都大于 T,无需比

qq_461491877的博客 6975
上一篇: 黑马程序员Java I/O系统2
下一篇: 黑马程序员网络编程
lamstudyingnet
博客等级 码龄15年 1粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值